diff --git a/CHANGELOG.md b/CHANGELOG.md index bf66da13..abdd7d0e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## v0.4.0 - Snapshot +* Added Velocity Support +* Now we use the ILogger util to allow the usage of slf4j and JUL +* Now we use blossom to inject variables into the jar and the code + ## v0.3.6 - Snapshot * Updated Dependencies * Spigot/Bungee 1.19 Support diff --git a/build.gradle b/build.gradle index 5417a531..bbbe1e46 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,12 @@ -import org.apache.tools.ant.filters.ReplaceTokens - plugins { id 'org.jetbrains.kotlin.jvm' version '1.7.0' id 'maven-publish' id 'com.github.johnrengelman.shadow' version '7.1.2' + id 'net.kyori.blossom' version '1.2.0' id 'org.jetbrains.dokka' version '1.6.21' } -def projectVersion = (System.getenv("VERSION") ?: '0.3.6-SNAPSHOT').replaceFirst("v", "").replace('/', '') +def projectVersion = (System.getenv("VERSION") ?: '0.4.0-SNAPSHOT').replaceFirst("v", "").replace('/', '') group 'xyz.theprogramsrc' version projectVersion @@ -21,6 +20,7 @@ repositories { maven { url 'https://oss.sonatype.org/content/repositories/releases/' } maven { url 'https://oss.sonatype.org/content/groups/public/' } maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' } + maven { url 'https://repo.papermc.io/repository/maven-public/' } maven { url 'https://repo.codemc.org/repository/maven-public/' } maven { url 'https://jitpack.io/' } } @@ -28,6 +28,7 @@ repositories { dependencies { compileOnly 'org.spigotmc:spigot-api:1.19-R0.1-SNAPSHOT' compileOnly 'net.md-5:bungeecord-api:1.19-R0.1-SNAPSHOT' + compileOnly 'com.velocitypowered:velocity-api:3.1.2-SNAPSHOT' implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.7.0' implementation 'org.jetbrains:annotations:23.0.0' @@ -35,6 +36,8 @@ dependencies { implementation 'com.google.code.gson:gson:2.9.0' implementation 'net.lingala.zip4j:zip4j:2.10.0' + annotationProcessor 'com.velocitypowered:velocity-api:3.0.1' + testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2' } @@ -61,8 +64,14 @@ java { withSourcesJar() } -processResources { - filter ReplaceTokens, tokens: [name: rootProject.name, version: project.version.toString(), description: project.description, git_short: System.getenv("GIT_COMMIT_SHORT_HASH") ?: "unknown", git_full: System.getenv("GIT_COMMIT_LONG_HASH") ?: "unknown"] +blossom { + replaceTokenIn('src/main/kotlin/xyz/theprogramsrc/simplecoreapi/velocity/VelocityLoader.kt') + + replaceToken '@name@', rootProject.name + replaceToken '@version@', project.version.toString() + replaceToken '@description@', project.description + replaceToken '@git_short@', System.getenv("GIT_COMMIT_SHORT_HASH") ?: "unknown" + replaceToken '@git_full@', System.getenv("GIT_COMMIT_LONG_HASH") ?: "unknown" } tasks.withType(JavaCompile){ diff --git a/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/bungee/BungeeLoader.kt b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/bungee/BungeeLoader.kt index c830beb3..5f49547f 100644 --- a/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/bungee/BungeeLoader.kt +++ b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/bungee/BungeeLoader.kt @@ -2,6 +2,7 @@ package xyz.theprogramsrc.simplecoreapi.bungee import net.md_5.bungee.api.plugin.Plugin import xyz.theprogramsrc.simplecoreapi.global.SimpleCoreAPI +import xyz.theprogramsrc.simplecoreapi.global.utils.logger.JavaLogger class BungeeLoader: Plugin() { @@ -12,7 +13,7 @@ class BungeeLoader: Plugin() { override fun onLoad() { instance = this - SimpleCoreAPI(this.logger) + SimpleCoreAPI(JavaLogger(this.logger)) } override fun onEnable() { diff --git a/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/GitHubUpdateChecker.kt b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/GitHubUpdateChecker.kt index b8b1725f..41a334d3 100644 --- a/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/GitHubUpdateChecker.kt +++ b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/GitHubUpdateChecker.kt @@ -2,18 +2,18 @@ package xyz.theprogramsrc.simplecoreapi.global import com.google.gson.JsonObject import com.google.gson.JsonParser +import xyz.theprogramsrc.simplecoreapi.global.utils.ILogger import java.net.URL import java.time.Instant import java.time.format.DateTimeFormatter -import java.util.logging.Logger /** * Representation of the GitHub Update Checker - * @param logger The logger to use + * @param logger The logger to use, it must be an instance of [ILogger] * @param repo The repository to check * @param currentVersion the current version (tag name) of the product */ -class GitHubUpdateChecker(val logger: Logger, val repo: String, val currentVersion: String, val latestReleaseTag: String = "latest") { +class GitHubUpdateChecker(val logger: ILogger, val repo: String, val currentVersion: String, val latestReleaseTag: String = "latest") { private var lastCheck = 0L private var lastCheckResult = false diff --git a/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/SimpleCoreAPI.kt b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/SimpleCoreAPI.kt index b1c43b10..c2b7b20c 100644 --- a/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/SimpleCoreAPI.kt +++ b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/SimpleCoreAPI.kt @@ -1,15 +1,15 @@ package xyz.theprogramsrc.simplecoreapi.global import xyz.theprogramsrc.simplecoreapi.global.module.ModuleManager +import xyz.theprogramsrc.simplecoreapi.global.utils.ILogger import xyz.theprogramsrc.simplecoreapi.global.utils.SoftwareType import java.util.* -import java.util.logging.Logger /** * Class used to initialize SimpleCoreAPI (DO NOT CALL IT FROM EXTERNAL PLUGINS, IT MAY CRASH) * @param logger The logger to use */ -class SimpleCoreAPI(logger: Logger) { +class SimpleCoreAPI(logger: ILogger) { companion object { /** diff --git a/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/module/ModuleManager.kt b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/module/ModuleManager.kt index 34a9e341..04123940 100644 --- a/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/module/ModuleManager.kt +++ b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/module/ModuleManager.kt @@ -3,6 +3,7 @@ package xyz.theprogramsrc.simplecoreapi.global.module import org.apache.commons.io.FileUtils import xyz.theprogramsrc.simplecoreapi.global.GitHubUpdateChecker import xyz.theprogramsrc.simplecoreapi.global.exceptions.* +import xyz.theprogramsrc.simplecoreapi.global.utils.ILogger import java.io.File import java.io.FileInputStream import java.io.IOException @@ -10,9 +11,8 @@ import java.net.URLClassLoader import java.util.* import java.util.jar.JarFile import java.util.jar.JarInputStream -import java.util.logging.Logger -class ModuleManager(private val logger: Logger) { +class ModuleManager(private val logger: ILogger) { private val modulesFolder = File("plugins/SimpleCoreAPI/modules") private val updatesFolder = File("plugins/SimpleCoreAPI/update") @@ -26,7 +26,7 @@ class ModuleManager(private val logger: Logger) { companion object { private var isLoaded = false - fun init(logger: Logger): ModuleManager { + fun init(logger: ILogger): ModuleManager { check(!isLoaded) { "ModuleManager is already loaded!" } isLoaded = true val moduleManager = ModuleManager(logger) @@ -137,7 +137,7 @@ class ModuleManager(private val logger: Logger) { logger.info("Successfully updated the module ${description.name}") updatedModules.add(description.name) } else { - logger.severe("Failed to update the module ${description.name}. Please download manually from https://github.com/${description.githubRepository}/releases/latest") + logger.error("Failed to update the module ${description.name}. Please download manually from https://github.com/${description.githubRepository}/releases/latest") } } else if(isAvailable){ // Notify the user that an update is available checker.checkWithPrint() diff --git a/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/utils/ILogger.kt b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/utils/ILogger.kt new file mode 100644 index 00000000..fa12ff9f --- /dev/null +++ b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/utils/ILogger.kt @@ -0,0 +1,12 @@ +package xyz.theprogramsrc.simplecoreapi.global.utils + +interface ILogger { + + fun info(message: String) + + fun warn(message: String) + + fun error(message: String) + + fun debug(message: String) +} \ No newline at end of file diff --git a/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/utils/logger/JavaLogger.kt b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/utils/logger/JavaLogger.kt new file mode 100644 index 00000000..87bc6a32 --- /dev/null +++ b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/utils/logger/JavaLogger.kt @@ -0,0 +1,25 @@ +package xyz.theprogramsrc.simplecoreapi.global.utils.logger + +import xyz.theprogramsrc.simplecoreapi.global.utils.ILogger +import java.util.logging.Level + +import java.util.logging.Logger + +class JavaLogger(val logger: Logger): ILogger { + + override fun info(message: String) { + logger.info(message) + } + + override fun warn(message: String) { + logger.warning(message) + } + + override fun error(message: String) { + logger.severe(message) + } + + override fun debug(message: String) { + logger.log(Level.FINE, "[DEBUG] $message") + } +} \ No newline at end of file diff --git a/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/utils/logger/SLF4JLogger.kt b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/utils/logger/SLF4JLogger.kt new file mode 100644 index 00000000..cf0564a1 --- /dev/null +++ b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/global/utils/logger/SLF4JLogger.kt @@ -0,0 +1,23 @@ +package xyz.theprogramsrc.simplecoreapi.global.utils.logger + +import org.slf4j.Logger +import xyz.theprogramsrc.simplecoreapi.global.utils.ILogger + +class SLF4JLogger(val logger: Logger): ILogger { + + override fun info(message: String) { + logger.info(message) + } + + override fun warn(message: String) { + logger.warn(message) + } + + override fun error(message: String) { + logger.error(message) + } + + override fun debug(message: String) { + logger.debug(message) + } +} \ No newline at end of file diff --git a/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/spigot/SpigotLoader.kt b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/spigot/SpigotLoader.kt index b813da24..43252e17 100644 --- a/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/spigot/SpigotLoader.kt +++ b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/spigot/SpigotLoader.kt @@ -2,6 +2,7 @@ package xyz.theprogramsrc.simplecoreapi.spigot import org.bukkit.plugin.java.JavaPlugin import xyz.theprogramsrc.simplecoreapi.global.SimpleCoreAPI +import xyz.theprogramsrc.simplecoreapi.global.utils.logger.JavaLogger class SpigotLoader: JavaPlugin() { @@ -12,7 +13,7 @@ class SpigotLoader: JavaPlugin() { override fun onLoad() { instance = this - SimpleCoreAPI(this.logger) + SimpleCoreAPI(JavaLogger(this.logger)) } override fun onEnable() { diff --git a/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/velocity/VelocityLoader.kt b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/velocity/VelocityLoader.kt new file mode 100644 index 00000000..8c93b1a0 --- /dev/null +++ b/src/main/kotlin/xyz/theprogramsrc/simplecoreapi/velocity/VelocityLoader.kt @@ -0,0 +1,28 @@ +package xyz.theprogramsrc.simplecoreapi.velocity + +import com.google.inject.Inject +import com.velocitypowered.api.plugin.Plugin +import com.velocitypowered.api.proxy.ProxyServer +import org.slf4j.Logger +import xyz.theprogramsrc.simplecoreapi.global.SimpleCoreAPI +import xyz.theprogramsrc.simplecoreapi.global.utils.logger.SLF4JLogger + +@Plugin( + id = "simplecoreapi", + name = "SimpleCoreAPI", + version = "@version@", + url = "theprogramsrc.xyz", + authors = ["TheProgramSrc"] +) +class VelocityLoader @Inject constructor(val server: ProxyServer, val logger: Logger) { + + companion object { + lateinit var instance: VelocityLoader + private set + } + + init { + instance = this + SimpleCoreAPI(SLF4JLogger(this.logger)) + } +} \ No newline at end of file diff --git a/src/test/kotlin/xyz/theprogramsrc/simplecoreapi/global/GitHubUpdateCheckerTest.kt b/src/test/kotlin/xyz/theprogramsrc/simplecoreapi/global/GitHubUpdateCheckerTest.kt index fe895fd4..20b52116 100644 --- a/src/test/kotlin/xyz/theprogramsrc/simplecoreapi/global/GitHubUpdateCheckerTest.kt +++ b/src/test/kotlin/xyz/theprogramsrc/simplecoreapi/global/GitHubUpdateCheckerTest.kt @@ -2,12 +2,14 @@ package xyz.theprogramsrc.simplecoreapi.global import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test +import xyz.theprogramsrc.simplecoreapi.global.utils.logger.JavaLogger +import xyz.theprogramsrc.simplecoreapi.global.utils.logger.SLF4JLogger import java.util.logging.Logger internal class GitHubUpdateCheckerTest { - private val check1 = GitHubUpdateChecker(Logger.getLogger("GitHubUpdateCheckerTest - 1"), "TheProgramSrc/SimpleCoreAPI", "0.3.0-SNAPSHOT", "v0.3.0-SNAPSHOT") - private val check2 = GitHubUpdateChecker(Logger.getLogger("GitHubUpdateCheckerTest - 2"), "TheProgramSrc/SimpleCoreAPI", "0.3.0-SNAPSHOT") + private val check1 = GitHubUpdateChecker(JavaLogger(Logger.getLogger("GitHubUpdateCheckerTest - 1")), "TheProgramSrc/SimpleCoreAPI", "0.3.0-SNAPSHOT", "v0.3.0-SNAPSHOT") + private val check2 = GitHubUpdateChecker(SLF4JLogger(org.slf4j.LoggerFactory.getLogger("GitHubUpdateCheckerTest - 2")), "TheProgramSrc/SimpleCoreAPI", "0.3.0-SNAPSHOT") @Test fun noUpdatesAvailableTest() {