From 3d885a85a29909e3c0ebd27411fc028924b195c2 Mon Sep 17 00:00:00 2001 From: huanmeng_qwq <49704373+huanmeng-qwq@users.noreply.github.com> Date: Sat, 14 Jan 2023 18:05:10 +0800 Subject: [PATCH] feat(platform): Sponge8 support (#4) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(support): 恢复Sponge代码 (cherry picked from commit 58bddd86aa63fb57a3aa92c32b0efa47840be451) * Sponge8 support * Sponge8 support * Sponge8 support Co-authored-by: carm --- .../carm/plugin/minesql/MineSQLPlatform.java | 3 +- .../cc/carm/plugin/minesql/MineSQLBukkit.java | 4 +- .../cc/carm/plugin/minesql/MineSQLBungee.java | 3 +- platforms/sponge8/pom.xml | 121 ++++++++++++++++++ .../cc/carm/plugin/minesql/MineSQLSponge.java | 112 ++++++++++++++++ .../sponge8/src/main/resource/easysql.conf | 17 +++ .../carm/plugin/minesql/MineSQLVelocity.java | 3 +- pom.xml | 1 + 8 files changed, 260 insertions(+), 4 deletions(-) create mode 100644 platforms/sponge8/pom.xml create mode 100644 platforms/sponge8/src/main/java/cc/carm/plugin/minesql/MineSQLSponge.java create mode 100644 platforms/sponge8/src/main/resource/easysql.conf diff --git a/core/src/main/java/cc/carm/plugin/minesql/MineSQLPlatform.java b/core/src/main/java/cc/carm/plugin/minesql/MineSQLPlatform.java index d1e531a..083bd75 100644 --- a/core/src/main/java/cc/carm/plugin/minesql/MineSQLPlatform.java +++ b/core/src/main/java/cc/carm/plugin/minesql/MineSQLPlatform.java @@ -2,6 +2,7 @@ package cc.carm.plugin.minesql; import co.aikar.commands.CommandManager; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.io.File; import java.util.logging.Logger; @@ -12,6 +13,6 @@ public interface MineSQLPlatform { @NotNull Logger getLogger(); - @NotNull CommandManager getCommandManager(); + @Nullable CommandManager getCommandManager(); } diff --git a/platforms/bukkit/src/main/java/cc/carm/plugin/minesql/MineSQLBukkit.java b/platforms/bukkit/src/main/java/cc/carm/plugin/minesql/MineSQLBukkit.java index a283b97..2ad5e1c 100644 --- a/platforms/bukkit/src/main/java/cc/carm/plugin/minesql/MineSQLBukkit.java +++ b/platforms/bukkit/src/main/java/cc/carm/plugin/minesql/MineSQLBukkit.java @@ -2,10 +2,12 @@ package cc.carm.plugin.minesql; import cc.carm.lib.easyplugin.EasyPlugin; import cc.carm.plugin.minesql.conf.PluginConfiguration; +import co.aikar.commands.CommandManager; import co.aikar.commands.PaperCommandManager; import org.bstats.bukkit.Metrics; import org.bstats.charts.SimplePie; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.io.File; @@ -73,7 +75,7 @@ public class MineSQLBukkit extends EasyPlugin implements MineSQLPlatform { return this.core.getConfig(); } - public @NotNull PaperCommandManager getCommandManager() { + public @Nullable CommandManager getCommandManager() { return commandManager; } diff --git a/platforms/bungee/src/main/java/cc/carm/plugin/minesql/MineSQLBungee.java b/platforms/bungee/src/main/java/cc/carm/plugin/minesql/MineSQLBungee.java index 88d9bbb..1b6f1ef 100644 --- a/platforms/bungee/src/main/java/cc/carm/plugin/minesql/MineSQLBungee.java +++ b/platforms/bungee/src/main/java/cc/carm/plugin/minesql/MineSQLBungee.java @@ -10,6 +10,7 @@ import net.md_5.bungee.api.plugin.Plugin; import org.bstats.bungeecord.Metrics; import org.bstats.charts.SimplePie; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.io.File; import java.util.Arrays; @@ -88,7 +89,7 @@ public class MineSQLBungee extends Plugin implements MineSQLPlatform { } @Override - public @NotNull CommandManager getCommandManager() { + public @Nullable CommandManager getCommandManager() { return this.commandManager; } diff --git a/platforms/sponge8/pom.xml b/platforms/sponge8/pom.xml new file mode 100644 index 0000000..e825cd7 --- /dev/null +++ b/platforms/sponge8/pom.xml @@ -0,0 +1,121 @@ + + + + minesql-parent + cc.carm.plugin + 1.2.2 + ../../pom.xml + + 4.0.0 + + + ${project.jdk.version} + ${project.jdk.version} + UTF-8 + UTF-8 + true + true + + + minesql-sponge + + MineSQL-Sponge + 轻松(用)SQL的独立运行库Sponge版本插件。 + https://github.com/CarmJos/MineSQL + + + + huanmeng + huanmeng-qwq + huanmeng@huanmeng-qwq.com + + Contributor + + + + + + + GNU General Public License v3.0 + https://opensource.org/licenses/GPL-3.0 + + + + + GitHub Issues + https://github.com/CarmJos/EasySQL-Plugin/issues + + + + GitHub Actions + https://github.com/CarmJos/EasySQL-Plugin/actions/workflows/maven.yml + + + + + sponge + https://repo.spongepowered.org/maven + + + + + + + + ${project.parent.groupId} + minesql-core + ${project.parent.version} + compile + + + + + org.spongepowered + spongeapi + 8.0.0 + provided + + + ninja.leaping.configurate + configurate-hocon + + + + + + org.bstats + bstats-sponge + 3.0.0 + true + compile + + + + co.aikar + acf-core + 0.5.1-SNAPSHOT + compile + + + + + + + + org.apache.maven.plugins + maven-source-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + + + \ No newline at end of file diff --git a/platforms/sponge8/src/main/java/cc/carm/plugin/minesql/MineSQLSponge.java b/platforms/sponge8/src/main/java/cc/carm/plugin/minesql/MineSQLSponge.java new file mode 100644 index 0000000..7b37e6f --- /dev/null +++ b/platforms/sponge8/src/main/java/cc/carm/plugin/minesql/MineSQLSponge.java @@ -0,0 +1,112 @@ +package cc.carm.plugin.minesql; + +import cc.carm.plugin.minesql.conf.PluginConfiguration; +import co.aikar.commands.CommandManager; +import com.google.inject.Inject; +import org.apache.logging.log4j.Logger; +import org.bstats.charts.SimplePie; +import org.bstats.sponge.Metrics; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +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.lifecycle.StartingEngineEvent; +import org.spongepowered.api.event.lifecycle.StoppingEngineEvent; +import org.spongepowered.plugin.PluginContainer; +import org.spongepowered.plugin.builtin.jvm.Plugin; + +import java.io.File; +import java.nio.file.Path; + +/** + * 2022/6/20
+ * MineSQL
+ * + * @author huanmeng_qwq + */ +@Plugin("minesql") +public class MineSQLSponge implements MineSQLPlatform { + private static MineSQLSponge instance; + + @ConfigDir(sharedRoot = false) + private Path configDirectory; + @Inject + private org.apache.logging.log4j.Logger logger; + + private final PluginContainer pluginContainer; + private final Metrics metrics; + + protected MineSQLCore core; + + @Inject + public MineSQLSponge(Metrics.Factory factory, PluginContainer pluginContainer) { + this.metrics = factory.make(14075); + instance = this; + this.core = new MineSQLCore(this); + this.pluginContainer = pluginContainer; + } + + @Listener + public void starting(StartingEngineEvent e) { + enable(); + } + + @Listener + public void disable(StoppingEngineEvent e) { + logger.info("终止全部数据库连接..."); + this.core.shutdownAll(); + } + + + public void enable() { + if (getConfiguration().METRICS.getNotNull()) { + getLog().info("启用统计数据..."); + metrics.addCustomChart(new SimplePie("update_check", + () -> getConfiguration().UPDATE_CHECKER.getNotNull() ? "ENABLED" : "DISABLED") + ); + metrics.addCustomChart(new SimplePie("properties_configuration", + () -> getConfiguration().PROPERTIES.ENABLE.getNotNull() ? "ENABLED" : "DISABLED") + ); + } + + if (getConfiguration().PROPERTIES.ENABLE.getNotNull()) { + logger.info("开始检查更新,可能需要一小段时间..."); + logger.info(" 如不希望检查更新,可在配置文件中关闭。"); + Sponge.asyncScheduler().executor(pluginContainer) + .execute(() -> this.core.checkUpdate(pluginContainer.metadata().version().getQualifier())) + ; + } else { + logger.info("已禁用检查更新,跳过。"); + } + } + + @Override + public @NotNull File getPluginFolder() { + return configDirectory.toFile(); + } + + public static @NotNull MineSQLSponge getInstance() { + return instance; + } + + public @NotNull PluginConfiguration getConfiguration() { + return this.core.getConfig(); + } + + public @NotNull java.util.logging.Logger getLogger() { + return java.util.logging.Logger.getLogger("MineSQL"); + } + + //fixme acf-sponge是基于sponge5编写的 无法使用 + @Override + public @Nullable CommandManager getCommandManager() { + return null; + } + + + private Logger getLog() { + return logger; + } +} diff --git a/platforms/sponge8/src/main/resource/easysql.conf b/platforms/sponge8/src/main/resource/easysql.conf new file mode 100644 index 0000000..291fa70 --- /dev/null +++ b/platforms/sponge8/src/main/resource/easysql.conf @@ -0,0 +1,17 @@ +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" + } +} + diff --git a/platforms/velocity/src/main/java/cc/carm/plugin/minesql/MineSQLVelocity.java b/platforms/velocity/src/main/java/cc/carm/plugin/minesql/MineSQLVelocity.java index 76caf32..e4670af 100644 --- a/platforms/velocity/src/main/java/cc/carm/plugin/minesql/MineSQLVelocity.java +++ b/platforms/velocity/src/main/java/cc/carm/plugin/minesql/MineSQLVelocity.java @@ -17,6 +17,7 @@ import com.velocitypowered.api.proxy.ProxyServer; import org.bstats.charts.SimplePie; import org.bstats.velocity.Metrics; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.io.File; import java.nio.file.Path; @@ -110,7 +111,7 @@ public class MineSQLVelocity implements MineSQLPlatform { @Override - public @NotNull CommandManager getCommandManager() { + public @Nullable CommandManager getCommandManager() { return commandManager; } diff --git a/pom.xml b/pom.xml index be63d7b..99ed595 100644 --- a/pom.xml +++ b/pom.xml @@ -32,6 +32,7 @@ platforms/bukkit platforms/bungee platforms/velocity + platforms/sponge8 plugin