feat: 优化日志
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# [HamsterBall](https://gitee.com/MiniDay/hamster-ball)
|
||||
|
||||
仓鼠球:一个基于 Netty 的 Minecraft 服务端通用消息中间件(原HamsterService)
|
||||
仓鼠球:一个基于 Redis 的 Minecraft 服务端通用消息中间件(原HamsterService)
|
||||
|
||||
该插件依赖于 [仓鼠核心](https://gitee.com/MiniDay/hamster-core)
|
||||
|
||||
|
@@ -28,21 +28,33 @@ public class HamsterBallPlugin extends JavaPlugin {
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
instance = this;
|
||||
long start = System.currentTimeMillis();
|
||||
Logger logger = getLogger();
|
||||
logger.info("仓鼠球正在初始化...");
|
||||
instance = this;
|
||||
saveDefaultConfig();
|
||||
reloadConfig();
|
||||
logger.info("已读取配置文件.");
|
||||
try {
|
||||
BallBukkitAPI.init();
|
||||
logger.info("BallBukkitAPI 已初始化.");
|
||||
BallBukkitAPI.getInstance().enable();
|
||||
logger.info("BallBukkitAPI 已启动.");
|
||||
logger.info("已初始化 BallAPI.");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
long time = System.currentTimeMillis() - start;
|
||||
logger.info("仓鼠球初始化完成,总计耗时 " + time + " ms.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
long start = System.currentTimeMillis();
|
||||
Logger logger = getLogger();
|
||||
logger.info("仓鼠球正在启动...");
|
||||
try {
|
||||
BallBukkitAPI.getInstance().enable();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (!BallAPI.getInstance().isEnabled()) {
|
||||
sync(() -> {
|
||||
logger.info("由于 HamsterBall 未能成功连接, 服务器将立即关闭.");
|
||||
@@ -57,21 +69,27 @@ public class HamsterBallPlugin extends JavaPlugin {
|
||||
ServerOnlineEvent.ACTION,
|
||||
new ServerOnlineEvent(BallAPI.getInstance().getLocalServerInfo())
|
||||
);
|
||||
logger.info("HamsterBall 已启动.");
|
||||
sync(() -> {
|
||||
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
|
||||
PlaceholderHook.INSTANCE.register();
|
||||
logger.info("已挂载 PlaceholderAPI 变量!");
|
||||
}
|
||||
});
|
||||
long time = System.currentTimeMillis() - start;
|
||||
logger.info("仓鼠球启动完成,总计耗时 " + time + " ms.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
long start = System.currentTimeMillis();
|
||||
Logger logger = getLogger();
|
||||
logger.info("仓鼠球正在关闭...");
|
||||
try {
|
||||
BallBukkitAPI.getInstance().disable();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
long time = System.currentTimeMillis() - start;
|
||||
logger.info("仓鼠球已关闭,总计耗时 " + time + " ms.");
|
||||
}
|
||||
}
|
||||
|
@@ -65,7 +65,15 @@ public class BallBukkitAPI extends BallAPI {
|
||||
)
|
||||
);
|
||||
|
||||
DataSource datasource = BallBukkitUtils.getDataSource(config.getConfigurationSection("datasource"));
|
||||
DataSource datasource;
|
||||
if (config.contains("datasource")) {
|
||||
plugin.getLogger().info("检测到配置文件中包含 datasource 节点,启用自定义数据库连接.");
|
||||
datasource = BallBukkitUtils.getDataSource(config.getConfigurationSection("datasource"));
|
||||
}else {
|
||||
plugin.getLogger().info("未检测到配置文件中的 datasource 节点,复用 HamsterCore 数据库连接.");
|
||||
datasource = CoreAPI.getInstance().getDataSource();
|
||||
}
|
||||
|
||||
File redissionConfig = new File(plugin.getDataFolder(), "redission.yml");
|
||||
if (!redissionConfig.exists()) {
|
||||
Files.copy(
|
||||
|
@@ -5,7 +5,7 @@ api-version: 1.13
|
||||
|
||||
author: MiniDay
|
||||
website: https://gitee.com/MiniDay/hamster-ball
|
||||
description: 仓鼠球:一个基于 Netty 的 Minecraft 服务端通用消息中间件(原HamsterService)
|
||||
description: 仓鼠球:一个基于 Redis 的 Minecraft 服务端通用消息中间件(原HamsterService)
|
||||
|
||||
load: STARTUP
|
||||
|
||||
|
@@ -15,6 +15,8 @@ dependencies {
|
||||
exclude(group = "org.yaml")
|
||||
exclude(group = "org.slf4j")
|
||||
}
|
||||
// https://mvnrepository.com/artifact/io.netty/netty-resolver-dns
|
||||
implementation("io.netty:netty-resolver-dns:4.1.96.Final")
|
||||
}
|
||||
|
||||
|
||||
|
@@ -20,22 +20,31 @@ public class HamsterBallPlugin extends Plugin {
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
instance = this;
|
||||
long start = System.currentTimeMillis();
|
||||
Logger logger = getLogger();
|
||||
logger.info("仓鼠球正在初始化...");
|
||||
instance = this;
|
||||
try {
|
||||
BallBungeeCordAPI.init();
|
||||
logger.info("BallBungeeCordAPI 已初始化.");
|
||||
BallBungeeCordAPI.getInstance().enable();
|
||||
logger.info("BallBungeeCordAPI 已启动.");
|
||||
logger.info("已初始化 BallAPI.");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
ProxyServer.getInstance().stop();
|
||||
}
|
||||
long time = System.currentTimeMillis() - start;
|
||||
logger.info("仓鼠球初始化完成,总计耗时 " + time + " ms.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
long start = System.currentTimeMillis();
|
||||
Logger logger = getLogger();
|
||||
logger.info("仓鼠球正在启动...");
|
||||
try {
|
||||
BallBungeeCordAPI.getInstance().enable();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (!BallAPI.getInstance().isEnabled()) {
|
||||
ProxyServer.getInstance().stop("由于 HamsterBall 未能成功连接, 服务器将立即关闭.");
|
||||
return;
|
||||
@@ -47,7 +56,6 @@ public class HamsterBallPlugin extends Plugin {
|
||||
ServerOnlineEvent.ACTION,
|
||||
new ServerOnlineEvent(BallAPI.getInstance().getLocalServerInfo())
|
||||
);
|
||||
logger.info("HamsterBall 已启动.");
|
||||
BallAPI.getInstance().getAllPlayerInfo().values()
|
||||
.stream()
|
||||
.filter(BallPlayerInfo::isOnline)
|
||||
@@ -56,14 +64,22 @@ public class HamsterBallPlugin extends Plugin {
|
||||
playerInfo.setOnline(false);
|
||||
BallBungeeCordUtils.uploadPlayerInfo(playerInfo);
|
||||
});
|
||||
|
||||
long time = System.currentTimeMillis() - start;
|
||||
logger.info("仓鼠球启动完成,总计耗时 " + time + " ms.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
long start = System.currentTimeMillis();
|
||||
Logger logger = getLogger();
|
||||
logger.info("仓鼠球正在关闭...");
|
||||
try {
|
||||
BallBungeeCordAPI.getInstance().disable();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
long time = System.currentTimeMillis() - start;
|
||||
logger.info("仓鼠球已关闭,总计耗时 " + time + " ms.");
|
||||
}
|
||||
}
|
||||
|
@@ -61,7 +61,15 @@ public class BallBungeeCordAPI extends BallAPI {
|
||||
)
|
||||
);
|
||||
|
||||
DataSource datasource = BallBungeeCordUtils.getDataSource(config.getSection("datasource"));
|
||||
DataSource datasource;
|
||||
if (config.contains("datasource")) {
|
||||
plugin.getLogger().info("检测到配置文件中包含 datasource 节点,启用自定义数据库连接.");
|
||||
datasource = BallBungeeCordUtils.getDataSource(config.getSection("datasource"));
|
||||
}else {
|
||||
plugin.getLogger().info("未检测到配置文件中的 datasource 节点,复用 HamsterCore 数据库连接.");
|
||||
datasource = CoreAPI.getInstance().getDataSource();
|
||||
}
|
||||
|
||||
File redissionConfig = new File(plugin.getDataFolder(), "redission.yml");
|
||||
if (!redissionConfig.exists()) {
|
||||
Files.copy(
|
||||
|
@@ -85,7 +85,7 @@ public final class BallBungeeCordListener implements Listener, BallListener {
|
||||
String serverID = event.getLocation().getServerID();
|
||||
ServerInfo serverInfo = ProxyServer.getInstance().getServerInfo(serverID);
|
||||
if (serverInfo == null) {
|
||||
HamsterBallPlugin.getInstance().getLogger().warning("试图传送玩家时失败: 服务器 " + serverID + " 不在线!");
|
||||
HamsterBallPlugin.getInstance().getLogger().warning("试图传送玩家时失败: 服务器 " + serverID + " 不在线!");
|
||||
break;
|
||||
}
|
||||
for (UUID uuid : event.getSendPlayerUUID()) {
|
||||
@@ -105,7 +105,7 @@ public final class BallBungeeCordListener implements Listener, BallListener {
|
||||
UUID toPlayerUUID = event.getToPlayerUUID();
|
||||
ProxiedPlayer toPlayer = ProxyServer.getInstance().getPlayer(toPlayerUUID);
|
||||
if (toPlayer == null) {
|
||||
HamsterBallPlugin.getInstance().getLogger().warning("试图传送玩家时失败: 目标玩家 " + toPlayerUUID + " 不在线!");
|
||||
HamsterBallPlugin.getInstance().getLogger().warning("试图传送玩家时失败: 目标玩家 " + toPlayerUUID + " 不在线!");
|
||||
break;
|
||||
}
|
||||
ServerInfo toServer = toPlayer.getServer().getInfo();
|
||||
|
@@ -3,7 +3,7 @@ main: cn.hamster3.mc.plugin.core.bungee.HamsterBallPlugin
|
||||
version: ${version}
|
||||
|
||||
author: MiniDay
|
||||
description: 仓鼠球:一个基于 Netty 的 Minecraft 服务端通用消息中间件(原HamsterService)
|
||||
description: 仓鼠球:一个基于 Redis 的 Minecraft 服务端通用消息中间件(原HamsterService)
|
||||
|
||||
depend:
|
||||
- HamsterCore
|
||||
|
@@ -1,17 +1,16 @@
|
||||
# 是否允许在控制台输出调试信息
|
||||
debug: false
|
||||
|
||||
ball-server:
|
||||
host: "ball.hamster3.cn"
|
||||
port: 58888
|
||||
event-loop-thread: 5
|
||||
|
||||
server-info:
|
||||
# 服务器唯一识别码,最长 32 字符
|
||||
id: "BungeeCord"
|
||||
# 服务端名称,用于展示给玩家看
|
||||
name: "代理端"
|
||||
# 当前子服的地址
|
||||
# 不填则自动设置为 0.0.0.0
|
||||
host: 0.0.0.0
|
||||
# 当前子服端口
|
||||
# 不填则自动设置为 25577
|
||||
port: 25577
|
||||
|
||||
# 数据库连接池配置
|
||||
|
@@ -3,8 +3,9 @@
|
||||
dependencies {
|
||||
// https://mvnrepository.com/artifact/com.google.code.gson/gson
|
||||
compileOnly("com.google.code.gson:gson:2.8.0")
|
||||
// https://mvnrepository.com/artifact/io.netty/netty-all
|
||||
compileOnly("io.netty:netty-all:4.1.86.Final")
|
||||
|
||||
// https://mvnrepository.com/artifact/io.netty/netty-buffer
|
||||
compileOnly("io.netty:netty-buffer:4.1.96.Final")
|
||||
|
||||
val hamsterCoreVersion = property("hamster_core_version")
|
||||
compileOnly("cn.hamster3.mc.plugin:core-common:${hamsterCoreVersion}")
|
||||
|
@@ -209,10 +209,10 @@ public abstract class BallAPI {
|
||||
}
|
||||
}
|
||||
}
|
||||
enabled = true;
|
||||
|
||||
RTopic topic = getRedissonClient().getTopic(BALL_CHANNEL, BallMessageInfoCodec.INSTANCE);
|
||||
topic.addListener(BallMessageInfo.class, BallMessageListener.INSTANCE);
|
||||
|
||||
enabled = true;
|
||||
}
|
||||
|
||||
protected void disable() throws SQLException, InterruptedException {
|
||||
@@ -233,7 +233,9 @@ public abstract class BallAPI {
|
||||
statement.executeUpdate();
|
||||
}
|
||||
}
|
||||
getLogger().info("正在关闭 redission...");
|
||||
getRedissonClient().shutdown();
|
||||
getLogger().info("已关闭 redission.");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -58,6 +58,12 @@ subprojects {
|
||||
"https://bukkit.windit.net/javadoc"
|
||||
)
|
||||
}
|
||||
shadowJar {
|
||||
destinationDirectory = rootProject.buildDir
|
||||
}
|
||||
build {
|
||||
dependsOn(shadowJar)
|
||||
}
|
||||
}
|
||||
|
||||
publishing {
|
||||
|
Reference in New Issue
Block a user