perf: 重写部分代码
This commit is contained in:
@@ -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 变量!");
|
||||
|
@@ -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 -> {
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user