feat: 适配 HamsterCore 更新

This commit is contained in:
2023-08-20 22:50:35 +08:00
parent b45ef40af2
commit 6aac1fafd6
8 changed files with 30 additions and 40 deletions

View File

@@ -43,11 +43,6 @@ public class BallBukkitListener implements Listener, BallListener {
private BallBukkitListener() { private BallBukkitListener() {
} }
@Override
public void onServiceDead() {
Bukkit.shutdown();
}
@Override @Override
public void onMessageReceived(@NotNull BallMessageInfo info) { public void onMessageReceived(@NotNull BallMessageInfo info) {
switch (info.getAction()) { switch (info.getAction()) {

View File

@@ -120,11 +120,6 @@ public final class BallBungeeCordListener implements Listener, BallListener {
} }
} }
@Override
public void onServiceDead() {
ProxyServer.getInstance().stop("HamsterBall 重连失败.");
}
@EventHandler(priority = EventPriority.HIGH) @EventHandler(priority = EventPriority.HIGH)
public void onPreLogin(PreLoginEvent event) { public void onPreLogin(PreLoginEvent event) {
BallAPI.getInstance().sendBallMessage( BallAPI.getInstance().sendBallMessage(

View File

@@ -14,8 +14,8 @@ import cn.hamster3.mc.plugin.ball.common.event.server.ServerOnlineEvent;
import cn.hamster3.mc.plugin.ball.common.listener.BallListener; import cn.hamster3.mc.plugin.ball.common.listener.BallListener;
import cn.hamster3.mc.plugin.ball.common.listener.BallMessageListener; import cn.hamster3.mc.plugin.ball.common.listener.BallMessageListener;
import cn.hamster3.mc.plugin.ball.common.listener.ListenerPriority; import cn.hamster3.mc.plugin.ball.common.listener.ListenerPriority;
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
import cn.hamster3.mc.plugin.core.common.data.DisplayMessage; import cn.hamster3.mc.plugin.core.common.data.DisplayMessage;
import cn.hamster3.mc.plugin.core.common.util.CoreUtils;
import cn.hamster3.mc.plugin.core.lib.net.kyori.adventure.text.Component; import cn.hamster3.mc.plugin.core.lib.net.kyori.adventure.text.Component;
import lombok.Getter; import lombok.Getter;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -277,7 +277,7 @@ public abstract class BallAPI {
null, null,
BallServerType.PROXY, BallServerType.PROXY,
BroadcastPlayerMessageEvent.ACTION, BroadcastPlayerMessageEvent.ACTION,
CoreUtils.GSON.toJsonTree( CoreAPI.getInstance().getGson().toJsonTree(
new BroadcastPlayerMessageEvent(message) new BroadcastPlayerMessageEvent(message)
) )
)); ));
@@ -297,7 +297,7 @@ public abstract class BallAPI {
null, null,
BallServerType.GAME, BallServerType.GAME,
DispatchConsoleCommandEvent.ACTION, DispatchConsoleCommandEvent.ACTION,
CoreUtils.GSON.toJsonTree( CoreAPI.getInstance().getGson().toJsonTree(
new DispatchConsoleCommandEvent(type, serverID, command) new DispatchConsoleCommandEvent(type, serverID, command)
) )
)); ));
@@ -317,7 +317,7 @@ public abstract class BallAPI {
null, null,
BallServerType.GAME, BallServerType.GAME,
DispatchPlayerCommandEvent.ACTION, DispatchPlayerCommandEvent.ACTION,
CoreUtils.GSON.toJsonTree( CoreAPI.getInstance().getGson().toJsonTree(
new DispatchPlayerCommandEvent(type, uuid, command) new DispatchPlayerCommandEvent(type, uuid, command)
) )
)); ));
@@ -346,7 +346,7 @@ public abstract class BallAPI {
null, null,
BallServerType.PROXY, BallServerType.PROXY,
KickPlayerEvent.ACTION, KickPlayerEvent.ACTION,
CoreUtils.GSON.toJsonTree( CoreAPI.getInstance().getGson().toJsonTree(
new KickPlayerEvent(uuid, reason) new KickPlayerEvent(uuid, reason)
) )
)); ));
@@ -384,7 +384,7 @@ public abstract class BallAPI {
null, null,
BallServerType.PROXY, BallServerType.PROXY,
SendMessageToPlayerEvent.ACTION, SendMessageToPlayerEvent.ACTION,
CoreUtils.GSON.toJsonTree( CoreAPI.getInstance().getGson().toJsonTree(
new SendMessageToPlayerEvent(Collections.singleton(receiver), message) new SendMessageToPlayerEvent(Collections.singleton(receiver), message)
) )
)); ));
@@ -423,7 +423,7 @@ public abstract class BallAPI {
null, null,
BallServerType.PROXY, BallServerType.PROXY,
SendMessageToPlayerEvent.ACTION, SendMessageToPlayerEvent.ACTION,
CoreUtils.GSON.toJsonTree( CoreAPI.getInstance().getGson().toJsonTree(
new SendMessageToPlayerEvent(new HashSet<>(receivers), message) new SendMessageToPlayerEvent(new HashSet<>(receivers), message)
) )
)); ));
@@ -540,7 +540,7 @@ public abstract class BallAPI {
* @param block 是否阻塞(设置为 true 则必须等待消息写入网络的操作完成后,该方法才会退出) * @param block 是否阻塞(设置为 true 则必须等待消息写入网络的操作完成后,该方法才会退出)
*/ */
public void sendBallMessage(@NotNull BallMessageInfo messageInfo, boolean block) { public void sendBallMessage(@NotNull BallMessageInfo messageInfo, boolean block) {
String string = CoreUtils.GSON.toJson(messageInfo); String string = CoreAPI.getInstance().getGson().toJson(messageInfo);
RTopic topic = getRedissonClient().getTopic(BallAPI.BALL_CHANNEL, StringCodec.INSTANCE); RTopic topic = getRedissonClient().getTopic(BallAPI.BALL_CHANNEL, StringCodec.INSTANCE);
if (block) { if (block) {
topic.publish(string); topic.publish(string);

View File

@@ -1,7 +1,7 @@
package cn.hamster3.mc.plugin.ball.common.codec; package cn.hamster3.mc.plugin.ball.common.codec;
import cn.hamster3.mc.plugin.ball.common.data.BallMessageInfo; import cn.hamster3.mc.plugin.ball.common.data.BallMessageInfo;
import cn.hamster3.mc.plugin.core.common.util.CoreUtils; import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator; import io.netty.buffer.ByteBufAllocator;
import io.netty.util.CharsetUtil; import io.netty.util.CharsetUtil;
@@ -22,7 +22,7 @@ public class BallMessageInfoCodec extends BaseCodec implements JsonCodec<BallMes
private final Decoder<Object> decoder = (buf, state) -> { private final Decoder<Object> decoder = (buf, state) -> {
String str = buf.toString(CharsetUtil.UTF_8); String str = buf.toString(CharsetUtil.UTF_8);
buf.readerIndex(buf.readableBytes()); buf.readerIndex(buf.readableBytes());
return CoreUtils.GSON.fromJson(str, BallMessageInfo.class); return CoreAPI.getInstance().getGson().fromJson(str, BallMessageInfo.class);
}; };
private BallMessageInfoCodec() { private BallMessageInfoCodec() {

View File

@@ -1,6 +1,6 @@
package cn.hamster3.mc.plugin.ball.common.data; package cn.hamster3.mc.plugin.ball.common.data;
import cn.hamster3.mc.plugin.core.common.util.CoreUtils; import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@@ -19,11 +19,11 @@ public class BallBlockPos {
private int z; private int z;
public static BallBlockPos fromJson(String json) { public static BallBlockPos fromJson(String json) {
return CoreUtils.GSON.fromJson(json, BallBlockPos.class); return CoreAPI.getInstance().getGson().fromJson(json, BallBlockPos.class);
} }
public JsonElement toJson() { public JsonElement toJson() {
return CoreUtils.GSON.toJsonTree(this); return CoreAPI.getInstance().getGson().toJsonTree(this);
} }
@NotNull @NotNull

View File

@@ -1,6 +1,6 @@
package cn.hamster3.mc.plugin.ball.common.data; package cn.hamster3.mc.plugin.ball.common.data;
import cn.hamster3.mc.plugin.core.common.util.CoreUtils; import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@@ -22,11 +22,11 @@ public class BallLocation {
private float pitch; private float pitch;
public static BallLocation fromJson(String json) { public static BallLocation fromJson(String json) {
return CoreUtils.GSON.fromJson(json, BallLocation.class); return CoreAPI.getInstance().getGson().fromJson(json, BallLocation.class);
} }
public JsonElement toJson() { public JsonElement toJson() {
return CoreUtils.GSON.toJsonTree(this); return CoreAPI.getInstance().getGson().toJsonTree(this);
} }
@NotNull @NotNull

View File

@@ -2,7 +2,7 @@ package cn.hamster3.mc.plugin.ball.common.data;
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.BallServerType; import cn.hamster3.mc.plugin.ball.common.entity.BallServerType;
import cn.hamster3.mc.plugin.core.common.util.CoreUtils; import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
@@ -72,7 +72,7 @@ public class BallMessageInfo {
this.channel = channel; this.channel = channel;
senderID = BallAPI.getInstance().getLocalServerId(); senderID = BallAPI.getInstance().getLocalServerId();
this.action = action; this.action = action;
this.content = CoreUtils.GSON.toJsonTree(content); this.content = CoreAPI.getInstance().getGson().toJsonTree(content);
} }
public BallMessageInfo(@NotNull String channel, @NotNull String senderID, @Nullable String receiverID, public BallMessageInfo(@NotNull String channel, @NotNull String senderID, @Nullable String receiverID,
@@ -114,7 +114,7 @@ public class BallMessageInfo {
* @return Java 对象 * @return Java 对象
*/ */
public <T> T getContentAs(@NotNull Class<T> clazz) { public <T> T getContentAs(@NotNull Class<T> clazz) {
return CoreUtils.GSON.fromJson(content, clazz); return CoreAPI.getInstance().getGson().fromJson(content, clazz);
} }
/** /**

View File

@@ -5,7 +5,7 @@ import cn.hamster3.mc.plugin.ball.common.data.BallMessageInfo;
import cn.hamster3.mc.plugin.ball.common.event.player.*; import cn.hamster3.mc.plugin.ball.common.event.player.*;
import cn.hamster3.mc.plugin.ball.common.event.server.ServerOfflineEvent; 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.event.server.ServerOnlineEvent;
import cn.hamster3.mc.plugin.core.common.util.CoreUtils; import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
import org.redisson.api.listener.MessageListener; import org.redisson.api.listener.MessageListener;
public class BallMessageListener implements MessageListener<BallMessageInfo> { public class BallMessageListener implements MessageListener<BallMessageInfo> {
@@ -28,7 +28,7 @@ public class BallMessageListener implements MessageListener<BallMessageInfo> {
} }
switch (info.getAction()) { switch (info.getAction()) {
case BallPlayerPreLoginEvent.ACTION: { case BallPlayerPreLoginEvent.ACTION: {
BallPlayerPreLoginEvent event = CoreUtils.GSON.fromJson(info.getContent(), BallPlayerPreLoginEvent.class); BallPlayerPreLoginEvent event = CoreAPI.getInstance().getGson().fromJson(info.getContent(), BallPlayerPreLoginEvent.class);
for (BallListener listener : BallAPI.getInstance().getListeners()) { for (BallListener listener : BallAPI.getInstance().getListeners()) {
try { try {
listener.onBallPlayerPreLogin(event); listener.onBallPlayerPreLogin(event);
@@ -39,7 +39,7 @@ public class BallMessageListener implements MessageListener<BallMessageInfo> {
break; break;
} }
case BallPlayerLoginEvent.ACTION: { case BallPlayerLoginEvent.ACTION: {
BallPlayerLoginEvent event = CoreUtils.GSON.fromJson(info.getContent(), BallPlayerLoginEvent.class); BallPlayerLoginEvent event = CoreAPI.getInstance().getGson().fromJson(info.getContent(), BallPlayerLoginEvent.class);
for (BallListener listener : BallAPI.getInstance().getListeners()) { for (BallListener listener : BallAPI.getInstance().getListeners()) {
try { try {
listener.onBallPlayerLogin(event); listener.onBallPlayerLogin(event);
@@ -50,7 +50,7 @@ public class BallMessageListener implements MessageListener<BallMessageInfo> {
break; break;
} }
case BallPlayerPostLoginEvent.ACTION: { case BallPlayerPostLoginEvent.ACTION: {
BallPlayerPostLoginEvent event = CoreUtils.GSON.fromJson(info.getContent(), BallPlayerPostLoginEvent.class); BallPlayerPostLoginEvent event = CoreAPI.getInstance().getGson().fromJson(info.getContent(), BallPlayerPostLoginEvent.class);
for (BallListener listener : BallAPI.getInstance().getListeners()) { for (BallListener listener : BallAPI.getInstance().getListeners()) {
try { try {
listener.onBallPlayerPostLogin(event); listener.onBallPlayerPostLogin(event);
@@ -61,7 +61,7 @@ public class BallMessageListener implements MessageListener<BallMessageInfo> {
break; break;
} }
case BallPlayerPreConnectServerEvent.ACTION: { case BallPlayerPreConnectServerEvent.ACTION: {
BallPlayerPreConnectServerEvent event = CoreUtils.GSON.fromJson(info.getContent(), BallPlayerPreConnectServerEvent.class); BallPlayerPreConnectServerEvent event = CoreAPI.getInstance().getGson().fromJson(info.getContent(), BallPlayerPreConnectServerEvent.class);
for (BallListener listener : BallAPI.getInstance().getListeners()) { for (BallListener listener : BallAPI.getInstance().getListeners()) {
try { try {
listener.onBallPlayerPreConnectServer(event); listener.onBallPlayerPreConnectServer(event);
@@ -72,7 +72,7 @@ public class BallMessageListener implements MessageListener<BallMessageInfo> {
break; break;
} }
case BallPlayerConnectServerEvent.ACTION: { case BallPlayerConnectServerEvent.ACTION: {
BallPlayerConnectServerEvent event = CoreUtils.GSON.fromJson(info.getContent(), BallPlayerConnectServerEvent.class); BallPlayerConnectServerEvent event = CoreAPI.getInstance().getGson().fromJson(info.getContent(), BallPlayerConnectServerEvent.class);
for (BallListener listener : BallAPI.getInstance().getListeners()) { for (BallListener listener : BallAPI.getInstance().getListeners()) {
try { try {
listener.onBallPlayerConnectServer(event); listener.onBallPlayerConnectServer(event);
@@ -83,7 +83,7 @@ public class BallMessageListener implements MessageListener<BallMessageInfo> {
break; break;
} }
case BallPlayerPostConnectServerEvent.ACTION: { case BallPlayerPostConnectServerEvent.ACTION: {
BallPlayerPostConnectServerEvent event = CoreUtils.GSON.fromJson(info.getContent(), BallPlayerPostConnectServerEvent.class); BallPlayerPostConnectServerEvent event = CoreAPI.getInstance().getGson().fromJson(info.getContent(), BallPlayerPostConnectServerEvent.class);
for (BallListener listener : BallAPI.getInstance().getListeners()) { for (BallListener listener : BallAPI.getInstance().getListeners()) {
try { try {
listener.onBallPlayerPostConnectServer(event); listener.onBallPlayerPostConnectServer(event);
@@ -94,7 +94,7 @@ public class BallMessageListener implements MessageListener<BallMessageInfo> {
break; break;
} }
case BallPlayerLogoutEvent.ACTION: { case BallPlayerLogoutEvent.ACTION: {
BallPlayerLogoutEvent event = CoreUtils.GSON.fromJson(info.getContent(), BallPlayerLogoutEvent.class); BallPlayerLogoutEvent event = CoreAPI.getInstance().getGson().fromJson(info.getContent(), BallPlayerLogoutEvent.class);
for (BallListener listener : BallAPI.getInstance().getListeners()) { for (BallListener listener : BallAPI.getInstance().getListeners()) {
try { try {
listener.onBallPlayerLogout(event); listener.onBallPlayerLogout(event);
@@ -105,7 +105,7 @@ public class BallMessageListener implements MessageListener<BallMessageInfo> {
break; break;
} }
case BallPlayerInfoUpdateEvent.ACTION: { case BallPlayerInfoUpdateEvent.ACTION: {
BallPlayerInfoUpdateEvent event = CoreUtils.GSON.fromJson(info.getContent(), BallPlayerInfoUpdateEvent.class); BallPlayerInfoUpdateEvent event = CoreAPI.getInstance().getGson().fromJson(info.getContent(), BallPlayerInfoUpdateEvent.class);
for (BallListener listener : BallAPI.getInstance().getListeners()) { for (BallListener listener : BallAPI.getInstance().getListeners()) {
try { try {
listener.onBallPlayerInfoUpdate(event); listener.onBallPlayerInfoUpdate(event);
@@ -116,7 +116,7 @@ public class BallMessageListener implements MessageListener<BallMessageInfo> {
break; break;
} }
case ServerOfflineEvent.ACTION: { case ServerOfflineEvent.ACTION: {
ServerOfflineEvent event = CoreUtils.GSON.fromJson(info.getContent(), ServerOfflineEvent.class); ServerOfflineEvent event = CoreAPI.getInstance().getGson().fromJson(info.getContent(), ServerOfflineEvent.class);
for (BallListener listener : BallAPI.getInstance().getListeners()) { for (BallListener listener : BallAPI.getInstance().getListeners()) {
try { try {
listener.onServerOffline(event); listener.onServerOffline(event);
@@ -127,7 +127,7 @@ public class BallMessageListener implements MessageListener<BallMessageInfo> {
break; break;
} }
case ServerOnlineEvent.ACTION: { case ServerOnlineEvent.ACTION: {
ServerOnlineEvent event = CoreUtils.GSON.fromJson(info.getContent(), ServerOnlineEvent.class); ServerOnlineEvent event = CoreAPI.getInstance().getGson().fromJson(info.getContent(), ServerOnlineEvent.class);
for (BallListener listener : BallAPI.getInstance().getListeners()) { for (BallListener listener : BallAPI.getInstance().getListeners()) {
try { try {
listener.onServerOnline(event); listener.onServerOnline(event);