perf: 重写部分代码

This commit is contained in:
2023-05-31 04:54:18 +08:00
parent 66441d41b6
commit 89665433db
3 changed files with 27 additions and 3 deletions

View File

@@ -39,6 +39,13 @@ public class HamsterBallPlugin extends JavaPlugin {
@Override
public void onEnable() {
Logger logger = getLogger();
if (!BallAPI.getInstance().isConnected()) {
sync(() -> {
logger.info("由于 HamsterBall 未能成功连接, 服务器将立即关闭.");
Bukkit.shutdown();
});
return;
}
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
PlaceholderHook.INSTANCE.register();
logger.info("已挂载 PlaceholderAPI 变量!");

View File

@@ -36,6 +36,10 @@ public class HamsterBallPlugin extends Plugin {
@Override
public void onEnable() {
Logger logger = getLogger();
if (!BallAPI.getInstance().isConnected()) {
ProxyServer.getInstance().stop("由于 HamsterBall 未能成功连接, 服务器将立即关闭.");
return;
}
ProxyServer.getInstance().getPluginManager().registerListener(this, BallBungeeCordListener.INSTANCE);
logger.info("已注册 BallBungeeCordListener.");
BallAPI.getInstance().sendBallMessage(
@@ -44,7 +48,8 @@ public class HamsterBallPlugin extends Plugin {
new ServerOnlineEvent(BallAPI.getInstance().getLocalServerInfo())
);
logger.info("HamsterBall 已启动.");
BallAPI.getInstance().getAllPlayerInfo().values().stream()
BallAPI.getInstance().getAllPlayerInfo().values()
.stream()
.filter(BallPlayerInfo::isOnline)
.filter(o -> BallAPI.getInstance().isLocalServer(o.getProxyServer()))
.forEach(playerInfo -> {

View File

@@ -56,14 +56,17 @@ public abstract class BallAPI {
private final Bootstrap bootstrap;
@NotNull
private final EventLoopGroup executors;
protected boolean enabled;
protected Channel channel;
private boolean enabled;
private boolean connected;
@NotNull
private List<BallListener> listeners;
protected BallAPI(@NotNull BallConfig config) {
this.config = config;
this.enabled = false;
this.connected = false;
serverInfo = new ConcurrentHashMap<>();
playerInfo = new ConcurrentHashMap<>();
@@ -154,6 +157,7 @@ public abstract class BallAPI {
@Override
public void onConnectRefused() {
enabled = false;
connected = false;
executors.shutdownGracefully();
getLogger().info("连接至服务中心的请求被拒绝,已关闭仓鼠球。");
}
@@ -252,6 +256,7 @@ public abstract class BallAPI {
ChannelFuture future = bootstrap.connect(config.getHost(), config.getPort()).await();
if (future.isSuccess()) {
channel = future.channel();
connected = true;
for (BallListener listener : listeners) {
listener.onConnectActive();
}
@@ -269,6 +274,7 @@ public abstract class BallAPI {
return;
}
channel = null;
connected = false;
if (tryCount <= 0) {
for (BallListener listener : getListeners()) {
try {
@@ -281,7 +287,7 @@ public abstract class BallAPI {
}
try {
connect();
} catch (InterruptedException e) {
} catch (Exception e) {
e.printStackTrace();
}
if (channel != null) {
@@ -320,6 +326,7 @@ public abstract class BallAPI {
}
channel = null;
connected = false;
executors.shutdownGracefully().await();
}
@@ -813,6 +820,11 @@ public abstract class BallAPI {
return info.getName();
}
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
public boolean isConnected() {
return connected;
}
@NotNull
public Map<String, BallServerInfo> getAllServerInfo() {
return serverInfo;