1
mirror of https://github.com/CarmJos/MineSQL.git synced 2026-06-04 16:43:03 +08:00

feat(platform): Support Sponge8 (#4)

This commit is contained in:
2023-01-14 21:07:37 +08:00
parent 3d885a85a2
commit d2df91d45c
12 changed files with 120 additions and 66 deletions
@@ -1,9 +1,11 @@
package cc.carm.plugin.minesql;
import cc.carm.lib.easyplugin.utils.ColorParser;
import cc.carm.lib.easyplugin.utils.JarResourceUtils;
import cc.carm.plugin.minesql.conf.PluginConfiguration;
import co.aikar.commands.CommandManager;
import com.google.inject.Inject;
import org.apache.logging.log4j.Logger;
import net.kyori.adventure.text.Component;
import org.bstats.charts.SimplePie;
import org.bstats.sponge.Metrics;
import org.jetbrains.annotations.NotNull;
@@ -12,6 +14,7 @@ import org.spongepowered.api.Server;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.config.ConfigDir;
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.Order;
import org.spongepowered.api.event.lifecycle.StartingEngineEvent;
import org.spongepowered.api.event.lifecycle.StoppingEngineEvent;
import org.spongepowered.plugin.PluginContainer;
@@ -19,50 +22,50 @@ import org.spongepowered.plugin.builtin.jvm.Plugin;
import java.io.File;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.Optional;
/**
* 2022/6/20<br>
* MineSQL<br>
*
* @author huanmeng_qwq
* @author huanmeng_qwq, CarmJos
*/
@Plugin("minesql")
public class MineSQLSponge implements MineSQLPlatform {
private static MineSQLSponge instance;
@Inject
@ConfigDir(sharedRoot = false)
private Path configDirectory;
@Inject
private org.apache.logging.log4j.Logger logger;
private final PluginContainer pluginContainer;
private final Metrics metrics;
private final Metrics.Factory metricsFactory;
protected MineSQLCore core;
protected final MineSQLCore core;
// protected SpongeCommandManager commandManager;
@Inject
public MineSQLSponge(Metrics.Factory factory, PluginContainer pluginContainer) {
this.metrics = factory.make(14075);
instance = this;
this.core = new MineSQLCore(this);
public MineSQLSponge(Metrics.Factory factory,
PluginContainer pluginContainer) {
this.pluginContainer = pluginContainer;
this.metricsFactory = factory;
getLogger().info("加载基础核心...");
this.core = new MineSQLCore(this);
}
@Listener
@Listener(order = Order.PRE)
public void starting(StartingEngineEvent<Server> e) {
enable();
}
outputInfo();
// getLogger().info("初始化指令管理器...");
// this.commandManager = new SpongeCommandManager(pluginContainer);
//
// getLogger().info("注册相关指令...");
// this.core.initializeCommands(getCommandManager());
@Listener
public void disable(StoppingEngineEvent<Server> e) {
logger.info("终止全部数据库连接...");
this.core.shutdownAll();
}
public void enable() {
if (getConfiguration().METRICS.getNotNull()) {
getLog().info("启用统计数据...");
getLogger().info("启用统计数据...");
Metrics metrics = this.metricsFactory.make(14078);
metrics.addCustomChart(new SimplePie("update_check",
() -> getConfiguration().UPDATE_CHECKER.getNotNull() ? "ENABLED" : "DISABLED")
);
@@ -72,25 +75,27 @@ public class MineSQLSponge implements MineSQLPlatform {
}
if (getConfiguration().PROPERTIES.ENABLE.getNotNull()) {
logger.info("开始检查更新,可能需要一小段时间...");
logger.info(" 如不希望检查更新,可在配置文件中关闭。");
getLogger().info("开始检查更新,可能需要一小段时间...");
getLogger().info(" 如不希望检查更新,可在配置文件中关闭。");
Sponge.asyncScheduler().executor(pluginContainer)
.execute(() -> this.core.checkUpdate(pluginContainer.metadata().version().getQualifier()))
;
.execute(() -> this.core.checkUpdate(getVersion()));
} else {
logger.info("已禁用检查更新,跳过。");
getLogger().info("已禁用检查更新,跳过。");
}
}
@Listener
public void disable(StoppingEngineEvent<Server> e) {
outputInfo();
logger.info("终止全部数据库连接...");
this.core.shutdownAll();
}
@Override
public @NotNull File getPluginFolder() {
return configDirectory.toFile();
}
public static @NotNull MineSQLSponge getInstance() {
return instance;
}
public @NotNull PluginConfiguration getConfiguration() {
return this.core.getConfig();
}
@@ -105,8 +110,14 @@ public class MineSQLSponge implements MineSQLPlatform {
return null;
}
private Logger getLog() {
return logger;
public String getVersion() {
return pluginContainer.metadata().version().toString();
}
public void outputInfo() {
Optional.ofNullable(JarResourceUtils.readResource(this.getClass().getResourceAsStream("PLUGIN_INFO")))
.map(v -> ColorParser.parse(Arrays.asList(v)))
.ifPresent(list -> list.forEach(s -> Sponge.server().sendMessage(Component.text(s))));
}
}
@@ -1,17 +0,0 @@
debug = false
metrics = false
check-update = true
properties {
enable = true
folder = "db-properties/"
}
databases {
example-test {
driver-type = "MYSQL"
host = "localhost"
port = -1
username = "root"
password = "root"
}
}
@@ -0,0 +1,39 @@
{
"loader": {
"name": "java_plain",
"version": "1.0"
},
"license": "GPL-3.0-or-later",
"global": {
"version": "8.0.0",
"links": {
"homepage": "${project.url}",
"source": "${project.url}",
"issues": "${project.url}/issues"
},
"contributors": [
{
"name": "huanmeng",
"description": "ContributorContributor"
},
{
"name": "CarmJos",
"description": "Lead Developer"
}
],
"dependencies": [
{
"id": "spongeapi",
"version": "8.0.0"
}
]
},
"plugins": [
{
"id": "minesql",
"name": "MineSQL (EasySQL-Plugin)",
"entrypoint": "cc.carm.plugin.minesql.MineSQLSponge",
"description": "${project.description}"
}
]
}