1
mirror of https://github.com/CarmJos/MineSQL.git synced 2024-09-19 20:25:45 +00:00

feat(platform): Sponge8 support (#4)

* feat(support): 恢复Sponge代码

(cherry picked from commit 58bddd86aa)

* Sponge8 support

* Sponge8 support

* Sponge8 support

Co-authored-by: carm <carm@carm.cc>
This commit is contained in:
huanmeng_qwq 2023-01-14 18:05:10 +08:00 committed by GitHub
parent 3c45eb29bf
commit 3d885a85a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 260 additions and 4 deletions

View File

@ -2,6 +2,7 @@ package cc.carm.plugin.minesql;
import co.aikar.commands.CommandManager; import co.aikar.commands.CommandManager;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File; import java.io.File;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -12,6 +13,6 @@ public interface MineSQLPlatform {
@NotNull Logger getLogger(); @NotNull Logger getLogger();
@NotNull CommandManager<?, ?, ?, ?, ?, ?> getCommandManager(); @Nullable CommandManager<?, ?, ?, ?, ?, ?> getCommandManager();
} }

View File

@ -2,10 +2,12 @@ package cc.carm.plugin.minesql;
import cc.carm.lib.easyplugin.EasyPlugin; import cc.carm.lib.easyplugin.EasyPlugin;
import cc.carm.plugin.minesql.conf.PluginConfiguration; import cc.carm.plugin.minesql.conf.PluginConfiguration;
import co.aikar.commands.CommandManager;
import co.aikar.commands.PaperCommandManager; import co.aikar.commands.PaperCommandManager;
import org.bstats.bukkit.Metrics; import org.bstats.bukkit.Metrics;
import org.bstats.charts.SimplePie; import org.bstats.charts.SimplePie;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File; import java.io.File;
@ -73,7 +75,7 @@ public class MineSQLBukkit extends EasyPlugin implements MineSQLPlatform {
return this.core.getConfig(); return this.core.getConfig();
} }
public @NotNull PaperCommandManager getCommandManager() { public @Nullable CommandManager<?, ?, ?, ?, ?, ?> getCommandManager() {
return commandManager; return commandManager;
} }

View File

@ -10,6 +10,7 @@ import net.md_5.bungee.api.plugin.Plugin;
import org.bstats.bungeecord.Metrics; import org.bstats.bungeecord.Metrics;
import org.bstats.charts.SimplePie; import org.bstats.charts.SimplePie;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File; import java.io.File;
import java.util.Arrays; import java.util.Arrays;
@ -88,7 +89,7 @@ public class MineSQLBungee extends Plugin implements MineSQLPlatform {
} }
@Override @Override
public @NotNull CommandManager<?, ?, ?, ?, ?, ?> getCommandManager() { public @Nullable CommandManager<?, ?, ?, ?, ?, ?> getCommandManager() {
return this.commandManager; return this.commandManager;
} }

121
platforms/sponge8/pom.xml Normal file
View File

@ -0,0 +1,121 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>minesql-parent</artifactId>
<groupId>cc.carm.plugin</groupId>
<version>1.2.2</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<properties>
<maven.compiler.source>${project.jdk.version}</maven.compiler.source>
<maven.compiler.target>${project.jdk.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<maven.javadoc.skip>true</maven.javadoc.skip>
<maven.deploy.skip>true</maven.deploy.skip>
</properties>
<artifactId>minesql-sponge</artifactId>
<name>MineSQL-Sponge</name>
<description>轻松(用)SQL的独立运行库Sponge版本插件。</description>
<url>https://github.com/CarmJos/MineSQL</url>
<developers>
<developer>
<id>huanmeng</id>
<name>huanmeng-qwq</name>
<email>huanmeng@huanmeng-qwq.com</email>
<roles>
<role>Contributor</role>
</roles>
</developer>
</developers>
<licenses>
<license>
<name>GNU General Public License v3.0</name>
<url>https://opensource.org/licenses/GPL-3.0</url>
</license>
</licenses>
<issueManagement>
<system>GitHub Issues</system>
<url>https://github.com/CarmJos/EasySQL-Plugin/issues</url>
</issueManagement>
<ciManagement>
<system>GitHub Actions</system>
<url>https://github.com/CarmJos/EasySQL-Plugin/actions/workflows/maven.yml</url>
</ciManagement>
<repositories>
<repository>
<id>sponge</id>
<url>https://repo.spongepowered.org/maven</url>
</repository>
</repositories>
<dependencies>
<!--suppress VulnerableLibrariesLocal -->
<dependency>
<groupId>${project.parent.groupId}</groupId>
<artifactId>minesql-core</artifactId>
<version>${project.parent.version}</version>
<scope>compile</scope>
</dependency>
<!--suppress VulnerableLibrariesLocal -->
<dependency>
<groupId>org.spongepowered</groupId>
<artifactId>spongeapi</artifactId>
<version>8.0.0</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>ninja.leaping.configurate</groupId>
<artifactId>configurate-hocon</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.bstats</groupId>
<artifactId>bstats-sponge</artifactId>
<version>3.0.0</version>
<optional>true</optional>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>co.aikar</groupId>
<artifactId>acf-core</artifactId>
<version>0.5.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

View File

@ -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<br>
* MineSQL<br>
*
* @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<Server> e) {
enable();
}
@Listener
public void disable(StoppingEngineEvent<Server> 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;
}
}

View File

@ -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"
}
}

View File

@ -17,6 +17,7 @@ import com.velocitypowered.api.proxy.ProxyServer;
import org.bstats.charts.SimplePie; import org.bstats.charts.SimplePie;
import org.bstats.velocity.Metrics; import org.bstats.velocity.Metrics;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File; import java.io.File;
import java.nio.file.Path; import java.nio.file.Path;
@ -110,7 +111,7 @@ public class MineSQLVelocity implements MineSQLPlatform {
@Override @Override
public @NotNull CommandManager<?, ?, ?, ?, ?, ?> getCommandManager() { public @Nullable CommandManager<?, ?, ?, ?, ?, ?> getCommandManager() {
return commandManager; return commandManager;
} }

View File

@ -32,6 +32,7 @@
<module>platforms/bukkit</module> <module>platforms/bukkit</module>
<module>platforms/bungee</module> <module>platforms/bungee</module>
<module>platforms/velocity</module> <module>platforms/velocity</module>
<module>platforms/sponge8</module>
<module>plugin</module> <module>plugin</module>
</modules> </modules>