Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VelocitySupport & Updates #41

Merged
merged 2 commits into from
Jun 16, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
19 changes: 14 additions & 5 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -21,20 +20,24 @@ 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/' }
}

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'
implementation 'commons-io:commons-io:2.11.0'
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'
}

Expand All @@ -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){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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() {

Expand All @@ -12,7 +13,7 @@ class BungeeLoader: Plugin() {

override fun onLoad() {
instance = this
SimpleCoreAPI(this.logger)
SimpleCoreAPI(JavaLogger(this.logger))
}

override fun onEnable() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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 {
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@ 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
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")
Expand All @@ -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)
Expand Down Expand Up @@ -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()
Expand Down
Original file line number Diff line number Diff line change
@@ -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)
}
Original file line number Diff line number Diff line change
@@ -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")
}
}
Original file line number Diff line number Diff line change
@@ -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)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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() {

Expand All @@ -12,7 +13,7 @@ class SpigotLoader: JavaPlugin() {

override fun onLoad() {
instance = this
SimpleCoreAPI(this.logger)
SimpleCoreAPI(JavaLogger(this.logger))
}

override fun onEnable() {
Expand Down
Original file line number Diff line number Diff line change
@@ -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))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down