From 11f8f0b241846a5c8cc95ec99b0f20acb40a853e Mon Sep 17 00:00:00 2001 From: wtlgo Date: Wed, 22 Mar 2023 12:21:29 +0300 Subject: [PATCH 01/19] Add velocity dependencies --- build.gradle | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/build.gradle b/build.gradle index 21eca0a..84fc6bd 100644 --- a/build.gradle +++ b/build.gradle @@ -53,12 +53,19 @@ repositories { name = "Ailis Maven Releases" url = "https://nexus.ailis.de/repository/maven-releases/de/ailis/pherialize/pherialize/" } + + maven { + name = 'papermc' + url = 'https://repo.papermc.io/repository/maven-public/' + } } dependencies { //noinspection VulnerableLibrariesLocal compileOnly "org.spigotmc:spigot-api:1.19.3-R0.1-SNAPSHOT" compileOnly "net.md-5:bungeecord-api:1.19-R0.1-SNAPSHOT" + compileOnly 'com.velocitypowered:velocity-api:3.1.1' + annotationProcessor 'com.velocitypowered:velocity-api:3.1.1' implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.10" From 09cf21ec88dab75e5fb2d9db2895fb71919068cd Mon Sep 17 00:00:00 2001 From: wtlgo Date: Wed, 22 Mar 2023 13:01:19 +0300 Subject: [PATCH 02/19] Add some groundwork --- .../VoteReceiverVelocityPlugin.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverVelocityPlugin.java diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverVelocityPlugin.java b/src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverVelocityPlugin.java new file mode 100644 index 0000000..04fed8d --- /dev/null +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverVelocityPlugin.java @@ -0,0 +1,31 @@ +package dev.mikchan.mcnp.votereceiver; + +import com.google.inject.Inject; +import com.velocitypowered.api.plugin.Plugin; +import com.velocitypowered.api.proxy.ProxyServer; +import org.slf4j.Logger; + +@Plugin(id = "mcn.vote-receiver", name = "MikChanのVoteReceiver", version = "0.1.0-SNAPSHOT", + url = "https://github.com/MikChanNoPlugins/VoteReceiver", + description = "Converts various monitoring vote systems to Votifier", + authors = {"George Endo (wtlgo / MikChan)"}) +public class VoteReceiverVelocityPlugin { + private final ProxyServer server; + private final Logger logger; + + @Inject + public VoteReceiverVelocityPlugin(ProxyServer server, Logger logger) { + this.server = server; + this.logger = logger; + + getLogger().info("Ping pong"); + } + + public ProxyServer getServer() { + return server; + } + + public Logger getLogger() { + return logger; + } +} From 1f5bc44f5c8eac40ffa2258299e727583c88451a Mon Sep 17 00:00:00 2001 From: wtlgo Date: Wed, 22 Mar 2023 13:03:57 +0300 Subject: [PATCH 03/19] Fix id --- .../mikchan/mcnp/votereceiver/VoteReceiverVelocityPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverVelocityPlugin.java b/src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverVelocityPlugin.java index 04fed8d..b20e8c1 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverVelocityPlugin.java +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverVelocityPlugin.java @@ -5,7 +5,7 @@ import com.velocitypowered.api.proxy.ProxyServer; import org.slf4j.Logger; -@Plugin(id = "mcn.vote-receiver", name = "MikChanのVoteReceiver", version = "0.1.0-SNAPSHOT", +@Plugin(id = "mcn_vote-receiver", name = "MikChanのVoteReceiver", version = "0.1.0-SNAPSHOT", url = "https://github.com/MikChanNoPlugins/VoteReceiver", description = "Converts various monitoring vote systems to Votifier", authors = {"George Endo (wtlgo / MikChan)"}) From 307e389cf9164c6cc0ba52e01ba55c551c70eb8e Mon Sep 17 00:00:00 2001 From: wtlgo Date: Thu, 23 Mar 2023 13:05:30 +0300 Subject: [PATCH 04/19] Switch to implementation --- build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 21eca0a..2bb107b 100644 --- a/build.gradle +++ b/build.gradle @@ -67,10 +67,10 @@ dependencies { implementation "dev.dejvokep:boosted-yaml:1.3" implementation "com.xk72:pherialize:1.2.4" - compileOnly "com.github.NuVotifier.NuVotifier:nuvotifier-bukkit:2.7.2" - compileOnly "com.github.NuVotifier.NuVotifier:nuvotifier-bungeecord:2.7.2" - compileOnly "com.github.NuVotifier.NuVotifier:nuvotifier-api:2.7.2" - compileOnly "com.github.NuVotifier.NuVotifier:nuvotifier-common:2.7.2" + implementation "com.github.NuVotifier.NuVotifier:nuvotifier-bukkit:2.7.2" + implementation "com.github.NuVotifier.NuVotifier:nuvotifier-bungeecord:2.7.2" + implementation "com.github.NuVotifier.NuVotifier:nuvotifier-api:2.7.2" + implementation "com.github.NuVotifier.NuVotifier:nuvotifier-common:2.7.2" implementation "org.bstats:bstats-bukkit:3.0.0" shadow "org.bstats:bstats-bukkit:3.0.0" From 1de74f4386f98730276e0fed0e5491ed30c764bb Mon Sep 17 00:00:00 2001 From: wtlgo Date: Thu, 23 Mar 2023 13:08:12 +0300 Subject: [PATCH 05/19] Make shading automatic --- build.gradle | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index 2bb107b..2f57a2b 100644 --- a/build.gradle +++ b/build.gradle @@ -135,14 +135,17 @@ javadocJar { shadowJar { archiveClassifier.set(null) - dependencies { - include(dependency("org.bstats:bstats-bukkit")) - include(dependency("org.bstats:bstats-base")) - } - - relocate "org.bstats", "dev.mikchan.mcnp.votereceiver.shadow.org.bstats" + project.configurations.shadow.canBeResolved = true + configurations = [project.configurations.shadow] } +import com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation + +task relocateShadowJar(type: ConfigureShadowRelocation) { + target = tasks.shadowJar + prefix = "dev.mikchan.mcnp.votereceiver.shadow" +} +tasks.shadowJar.dependsOn tasks.relocateShadowJar publishing { repositories { From e9cf782ccc66a440875c8bde0d283f4e0324fec9 Mon Sep 17 00:00:00 2001 From: wtlgo Date: Thu, 23 Mar 2023 13:09:26 +0300 Subject: [PATCH 06/19] Remove unnecessary directives --- build.gradle | 4 ---- 1 file changed, 4 deletions(-) diff --git a/build.gradle b/build.gradle index 2f57a2b..622107e 100644 --- a/build.gradle +++ b/build.gradle @@ -72,11 +72,7 @@ dependencies { implementation "com.github.NuVotifier.NuVotifier:nuvotifier-api:2.7.2" implementation "com.github.NuVotifier.NuVotifier:nuvotifier-common:2.7.2" - implementation "org.bstats:bstats-bukkit:3.0.0" shadow "org.bstats:bstats-bukkit:3.0.0" - - implementation "org.bstats:bstats-base:3.0.0" - shadow "org.bstats:bstats-base:3.0.0" } def targetJavaVersion = 11 From 1e879b2de9896b4565816dbecf306ede3192cb9f Mon Sep 17 00:00:00 2001 From: wtlgo Date: Thu, 23 Mar 2023 13:31:21 +0300 Subject: [PATCH 07/19] Bump version --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 622107e..79f7af2 100644 --- a/build.gradle +++ b/build.gradle @@ -24,7 +24,7 @@ static def determineVersion(String defaultVersion) { } group = "dev.mikchan.mcnp" -version = determineVersion("1.2.1") +version = determineVersion("1.2.2") def localProperties = new Properties() def propertiesFile = rootProject.file("local.properties") From c8387655f225c0a526cd7646caf879be2a4fd56b Mon Sep 17 00:00:00 2001 From: wtlgo Date: Thu, 23 Mar 2023 13:47:00 +0300 Subject: [PATCH 08/19] Add org.apache.maven:maven-resolver-provider --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 2ed03c9..6308516 100644 --- a/build.gradle +++ b/build.gradle @@ -80,6 +80,7 @@ dependencies { implementation "com.github.NuVotifier.NuVotifier:nuvotifier-common:2.7.2" shadow "org.bstats:bstats-bukkit:3.0.0" + shadow "org.apache.maven:maven-resolver-provider:3.9.1" } def targetJavaVersion = 11 From a066251ef1d57484eade17fd80f27e7ba211e618 Mon Sep 17 00:00:00 2001 From: wtlgo Date: Mon, 27 Mar 2023 13:24:02 +0300 Subject: [PATCH 09/19] Holy macaroni... --- build.gradle | 32 +++-- .../VoteReceiverVelocityPlugin.java | 31 ----- .../VoteReceiverBungeeCordPlugin.kt | 16 ++- .../bungee/factory/BungeeCordFactory.kt | 20 +++ .../mcnp/votereceiver/{ => core}/IPlugin.kt | 10 +- .../votereceiver/{ => core}/config/IConfig.kt | 2 +- .../config/boosted/BoostedYamlConfig.kt | 4 +- .../config/fallback/FallbackConfig.kt | 4 +- .../core/factory/CommonFactory.kt | 33 +++++ .../{ => core}/factory/IFactory.kt | 6 +- .../mcnp/votereceiver/core/log/ILogger.kt | 21 +++ .../votereceiver/core/log/JvmLoggerProxy.kt | 18 +++ .../votereceiver/core/log/Sl4jLoggerProxy.kt | 17 +++ .../{ => core}/utility/IUtility.kt | 2 +- .../{ => core}/utility/base/Utility.kt | 4 +- .../mcnp/votereceiver/core/web/BuildRoutes.kt | 16 +++ .../{ => core}/web/MineServTopRoute.kt | 4 +- .../{ => core}/web/TMonitoringComRoute.kt | 7 +- .../votereceiver/{ => core}/web/TestRoute.kt | 4 +- .../factory/bungee/BungeeCordFactory.kt | 51 -------- .../factory/spigot/SpigotFactory.kt | 50 -------- .../{ => spigot}/VoteReceiverSpigotPlugin.kt | 16 ++- .../spigot/factory/SpigotFactory.kt | 19 +++ .../velocity/VoteReceiverVelocityPlugin.kt | 24 ++++ .../VoteReceiverVelocityPluginWrapper.java | 120 ++++++++++++++++++ .../velocity/factory/VelocityFactory.kt | 20 +++ src/main/resources/bungee.yml | 2 +- src/main/resources/plugin.yml | 2 +- 28 files changed, 374 insertions(+), 181 deletions(-) delete mode 100644 src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverVelocityPlugin.java rename src/main/java/dev/mikchan/mcnp/votereceiver/{ => bungee}/VoteReceiverBungeeCordPlugin.kt (64%) create mode 100644 src/main/java/dev/mikchan/mcnp/votereceiver/bungee/factory/BungeeCordFactory.kt rename src/main/java/dev/mikchan/mcnp/votereceiver/{ => core}/IPlugin.kt (72%) rename src/main/java/dev/mikchan/mcnp/votereceiver/{ => core}/config/IConfig.kt (91%) rename src/main/java/dev/mikchan/mcnp/votereceiver/{ => core}/config/boosted/BoostedYamlConfig.kt (90%) rename src/main/java/dev/mikchan/mcnp/votereceiver/{ => core}/config/fallback/FallbackConfig.kt (68%) create mode 100644 src/main/java/dev/mikchan/mcnp/votereceiver/core/factory/CommonFactory.kt rename src/main/java/dev/mikchan/mcnp/votereceiver/{ => core}/factory/IFactory.kt (82%) create mode 100644 src/main/java/dev/mikchan/mcnp/votereceiver/core/log/ILogger.kt create mode 100644 src/main/java/dev/mikchan/mcnp/votereceiver/core/log/JvmLoggerProxy.kt create mode 100644 src/main/java/dev/mikchan/mcnp/votereceiver/core/log/Sl4jLoggerProxy.kt rename src/main/java/dev/mikchan/mcnp/votereceiver/{ => core}/utility/IUtility.kt (87%) rename src/main/java/dev/mikchan/mcnp/votereceiver/{ => core}/utility/base/Utility.kt (73%) create mode 100644 src/main/java/dev/mikchan/mcnp/votereceiver/core/web/BuildRoutes.kt rename src/main/java/dev/mikchan/mcnp/votereceiver/{ => core}/web/MineServTopRoute.kt (94%) rename src/main/java/dev/mikchan/mcnp/votereceiver/{ => core}/web/TMonitoringComRoute.kt (91%) rename src/main/java/dev/mikchan/mcnp/votereceiver/{ => core}/web/TestRoute.kt (91%) delete mode 100644 src/main/java/dev/mikchan/mcnp/votereceiver/factory/bungee/BungeeCordFactory.kt delete mode 100644 src/main/java/dev/mikchan/mcnp/votereceiver/factory/spigot/SpigotFactory.kt rename src/main/java/dev/mikchan/mcnp/votereceiver/{ => spigot}/VoteReceiverSpigotPlugin.kt (70%) create mode 100644 src/main/java/dev/mikchan/mcnp/votereceiver/spigot/factory/SpigotFactory.kt create mode 100644 src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPlugin.kt create mode 100644 src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java create mode 100644 src/main/java/dev/mikchan/mcnp/votereceiver/velocity/factory/VelocityFactory.kt diff --git a/build.gradle b/build.gradle index 6308516..bc5359e 100644 --- a/build.gradle +++ b/build.gradle @@ -58,6 +58,15 @@ repositories { name = 'papermc' url = 'https://repo.papermc.io/repository/maven-public/' } + + maven { + name = "GitHub/MikChanNoPlugins/Utility.DependencyDownloader" + url = "https://maven.pkg.github.com/MikChanNoPlugins/Utility.DependencyDownloader" + credentials { + username = localProperties['user'] ?: System.getenv("GITHUB_ACTOR") + password = localProperties['key'] ?: System.getenv("GITHUB_TOKEN") + } + } } dependencies { @@ -67,20 +76,20 @@ dependencies { compileOnly 'com.velocitypowered:velocity-api:3.1.1' annotationProcessor 'com.velocitypowered:velocity-api:3.1.1' + compileOnly "com.github.NuVotifier.NuVotifier:nuvotifier-bukkit:2.7.2" + compileOnly "com.github.NuVotifier.NuVotifier:nuvotifier-bungeecord:2.7.2" + compileOnly "com.github.NuVotifier.NuVotifier:nuvotifier-api:2.7.2" + compileOnly "com.github.NuVotifier.NuVotifier:nuvotifier-common:2.7.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.10" implementation "io.ktor:ktor-server-core:2.2.4" implementation "io.ktor:ktor-server-netty:2.2.4" implementation "dev.dejvokep:boosted-yaml:1.3" implementation "com.xk72:pherialize:1.2.4" + implementation "dev.jeka:jeka-core:0.10.11" - implementation "com.github.NuVotifier.NuVotifier:nuvotifier-bukkit:2.7.2" - implementation "com.github.NuVotifier.NuVotifier:nuvotifier-bungeecord:2.7.2" - implementation "com.github.NuVotifier.NuVotifier:nuvotifier-api:2.7.2" - implementation "com.github.NuVotifier.NuVotifier:nuvotifier-common:2.7.2" - - shadow "org.bstats:bstats-bukkit:3.0.0" - shadow "org.apache.maven:maven-resolver-provider:3.9.1" + shadow "org.bstats:bstats-bukkit:3.0.1" } def targetJavaVersion = 11 @@ -126,6 +135,7 @@ if (file("local.gradle").exists()) { apply from: "local.gradle" } +/* dokkaHtml { outputDirectory.set(file("${buildDir}/dokka")) } @@ -135,12 +145,16 @@ javadocJar { dependsOn("dokkaHtml") from("$buildDir/dokka") } +*/ + +javadocJar { + from(tasks.named("dokkaJavadoc")) +} shadowJar { archiveClassifier.set(null) - - project.configurations.shadow.canBeResolved = true configurations = [project.configurations.shadow] + minimize() } import com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverVelocityPlugin.java b/src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverVelocityPlugin.java deleted file mode 100644 index b20e8c1..0000000 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverVelocityPlugin.java +++ /dev/null @@ -1,31 +0,0 @@ -package dev.mikchan.mcnp.votereceiver; - -import com.google.inject.Inject; -import com.velocitypowered.api.plugin.Plugin; -import com.velocitypowered.api.proxy.ProxyServer; -import org.slf4j.Logger; - -@Plugin(id = "mcn_vote-receiver", name = "MikChanのVoteReceiver", version = "0.1.0-SNAPSHOT", - url = "https://github.com/MikChanNoPlugins/VoteReceiver", - description = "Converts various monitoring vote systems to Votifier", - authors = {"George Endo (wtlgo / MikChan)"}) -public class VoteReceiverVelocityPlugin { - private final ProxyServer server; - private final Logger logger; - - @Inject - public VoteReceiverVelocityPlugin(ProxyServer server, Logger logger) { - this.server = server; - this.logger = logger; - - getLogger().info("Ping pong"); - } - - public ProxyServer getServer() { - return server; - } - - public Logger getLogger() { - return logger; - } -} diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverBungeeCordPlugin.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/bungee/VoteReceiverBungeeCordPlugin.kt similarity index 64% rename from src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverBungeeCordPlugin.kt rename to src/main/java/dev/mikchan/mcnp/votereceiver/bungee/VoteReceiverBungeeCordPlugin.kt index 73bcc53..5d3d5da 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverBungeeCordPlugin.kt +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/bungee/VoteReceiverBungeeCordPlugin.kt @@ -1,15 +1,17 @@ -package dev.mikchan.mcnp.votereceiver +package dev.mikchan.mcnp.votereceiver.bungee import com.vexsoftware.votifier.VoteHandler -import dev.mikchan.mcnp.votereceiver.config.IConfig -import dev.mikchan.mcnp.votereceiver.factory.IFactory -import dev.mikchan.mcnp.votereceiver.factory.bungee.BungeeCordFactory -import dev.mikchan.mcnp.votereceiver.utility.IUtility +import dev.mikchan.mcnp.votereceiver.bungee.factory.BungeeCordFactory +import dev.mikchan.mcnp.votereceiver.core.IPlugin +import dev.mikchan.mcnp.votereceiver.core.config.IConfig +import dev.mikchan.mcnp.votereceiver.core.factory.IFactory +import dev.mikchan.mcnp.votereceiver.core.log.ILogger +import dev.mikchan.mcnp.votereceiver.core.log.JvmLoggerProxy +import dev.mikchan.mcnp.votereceiver.core.utility.IUtility import io.ktor.server.engine.* import net.md_5.bungee.api.plugin.Plugin import java.util.concurrent.ExecutorService import java.util.concurrent.Executors -import java.util.logging.Logger /** * Main bungeeecord plugin class @@ -23,7 +25,7 @@ class VoteReceiverBungeeCordPlugin : Plugin(), IPlugin { override val voteHandler: VoteHandler? by lazy { factory.createVoteHandler() } override val threadPool: ExecutorService by lazy { Executors.newSingleThreadExecutor() } override val webServer: ApplicationEngine by lazy { factory.createApplicationEngine() } - override val log: Logger get() = this.logger + override val log: ILogger by lazy { JvmLoggerProxy(this.logger) } override fun onEnable() { webServer.start() diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/bungee/factory/BungeeCordFactory.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/bungee/factory/BungeeCordFactory.kt new file mode 100644 index 0000000..aba51a8 --- /dev/null +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/bungee/factory/BungeeCordFactory.kt @@ -0,0 +1,20 @@ +package dev.mikchan.mcnp.votereceiver.bungee.factory + +import com.vexsoftware.votifier.bungee.NuVotifier +import dev.mikchan.mcnp.votereceiver.bungee.VoteReceiverBungeeCordPlugin +import dev.mikchan.mcnp.votereceiver.core.config.IConfig +import dev.mikchan.mcnp.votereceiver.core.factory.CommonFactory +import net.md_5.bungee.api.ProxyServer +import java.io.File + +internal class BungeeCordFactory(private val plugin: VoteReceiverBungeeCordPlugin) : CommonFactory(plugin) { + override fun createConfig(): IConfig { + val resource = plugin.getResourceAsStream("config.yml") + val document = File(plugin.dataFolder, "config.yml") + return createConfig(document, resource) + } + + override fun createVoteHandler(): NuVotifier? { + return ProxyServer.getInstance().pluginManager.getPlugin("NuVotifier") as? NuVotifier + } +} diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/IPlugin.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/core/IPlugin.kt similarity index 72% rename from src/main/java/dev/mikchan/mcnp/votereceiver/IPlugin.kt rename to src/main/java/dev/mikchan/mcnp/votereceiver/core/IPlugin.kt index b78e2d5..e485331 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/IPlugin.kt +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/core/IPlugin.kt @@ -1,11 +1,11 @@ -package dev.mikchan.mcnp.votereceiver +package dev.mikchan.mcnp.votereceiver.core import com.vexsoftware.votifier.VoteHandler -import dev.mikchan.mcnp.votereceiver.config.IConfig -import dev.mikchan.mcnp.votereceiver.utility.IUtility +import dev.mikchan.mcnp.votereceiver.core.config.IConfig +import dev.mikchan.mcnp.votereceiver.core.log.ILogger +import dev.mikchan.mcnp.votereceiver.core.utility.IUtility import io.ktor.server.engine.* import java.util.concurrent.ExecutorService -import java.util.logging.Logger /** * Plugin interface @@ -39,5 +39,5 @@ interface IPlugin { /** * Logger instance */ - val log: Logger + val log: ILogger } diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/config/IConfig.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/core/config/IConfig.kt similarity index 91% rename from src/main/java/dev/mikchan/mcnp/votereceiver/config/IConfig.kt rename to src/main/java/dev/mikchan/mcnp/votereceiver/core/config/IConfig.kt index fd53f55..75644a6 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/config/IConfig.kt +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/core/config/IConfig.kt @@ -1,4 +1,4 @@ -package dev.mikchan.mcnp.votereceiver.config +package dev.mikchan.mcnp.votereceiver.core.config /** * Describes configuration diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/config/boosted/BoostedYamlConfig.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/core/config/boosted/BoostedYamlConfig.kt similarity index 90% rename from src/main/java/dev/mikchan/mcnp/votereceiver/config/boosted/BoostedYamlConfig.kt rename to src/main/java/dev/mikchan/mcnp/votereceiver/core/config/boosted/BoostedYamlConfig.kt index 67a0651..af62463 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/config/boosted/BoostedYamlConfig.kt +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/core/config/boosted/BoostedYamlConfig.kt @@ -1,4 +1,4 @@ -package dev.mikchan.mcnp.votereceiver.config.boosted +package dev.mikchan.mcnp.votereceiver.core.config.boosted import dev.dejvokep.boostedyaml.YamlDocument import dev.dejvokep.boostedyaml.dvs.versioning.BasicVersioning @@ -6,7 +6,7 @@ import dev.dejvokep.boostedyaml.settings.dumper.DumperSettings import dev.dejvokep.boostedyaml.settings.general.GeneralSettings import dev.dejvokep.boostedyaml.settings.loader.LoaderSettings import dev.dejvokep.boostedyaml.settings.updater.UpdaterSettings -import dev.mikchan.mcnp.votereceiver.config.IConfig +import dev.mikchan.mcnp.votereceiver.core.config.IConfig import java.io.File import java.io.InputStream diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/config/fallback/FallbackConfig.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/core/config/fallback/FallbackConfig.kt similarity index 68% rename from src/main/java/dev/mikchan/mcnp/votereceiver/config/fallback/FallbackConfig.kt rename to src/main/java/dev/mikchan/mcnp/votereceiver/core/config/fallback/FallbackConfig.kt index 82b3c22..af23d11 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/config/fallback/FallbackConfig.kt +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/core/config/fallback/FallbackConfig.kt @@ -1,6 +1,6 @@ -package dev.mikchan.mcnp.votereceiver.config.fallback +package dev.mikchan.mcnp.votereceiver.core.config.fallback -import dev.mikchan.mcnp.votereceiver.config.IConfig +import dev.mikchan.mcnp.votereceiver.core.config.IConfig internal class FallbackConfig : IConfig { override fun reload(): Boolean { diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/core/factory/CommonFactory.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/core/factory/CommonFactory.kt new file mode 100644 index 0000000..8915b9b --- /dev/null +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/core/factory/CommonFactory.kt @@ -0,0 +1,33 @@ +package dev.mikchan.mcnp.votereceiver.core.factory + +import dev.mikchan.mcnp.votereceiver.core.IPlugin +import dev.mikchan.mcnp.votereceiver.core.config.IConfig +import dev.mikchan.mcnp.votereceiver.core.config.boosted.BoostedYamlConfig +import dev.mikchan.mcnp.votereceiver.core.config.fallback.FallbackConfig +import dev.mikchan.mcnp.votereceiver.core.utility.IUtility +import dev.mikchan.mcnp.votereceiver.core.utility.base.Utility +import dev.mikchan.mcnp.votereceiver.core.web.buildRoutes +import io.ktor.server.engine.* +import io.ktor.server.netty.* +import java.io.File +import java.io.InputStream + +internal abstract class CommonFactory(private val plugin: IPlugin) : IFactory { + protected fun createConfig(document: File?, resource: InputStream?): IConfig { + return if (document == null || resource == null) { + FallbackConfig() + } else { + BoostedYamlConfig(document, resource) + } + } + + override fun createUtility(): IUtility { + return Utility() + } + + override fun createApplicationEngine(): ApplicationEngine { + return embeddedServer(Netty, port = plugin.config.port) { + buildRoutes(plugin) + } + } +} diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/factory/IFactory.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/core/factory/IFactory.kt similarity index 82% rename from src/main/java/dev/mikchan/mcnp/votereceiver/factory/IFactory.kt rename to src/main/java/dev/mikchan/mcnp/votereceiver/core/factory/IFactory.kt index 8c222ce..3d73f8e 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/factory/IFactory.kt +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/core/factory/IFactory.kt @@ -1,9 +1,9 @@ -package dev.mikchan.mcnp.votereceiver.factory +package dev.mikchan.mcnp.votereceiver.core.factory import com.vexsoftware.votifier.NuVotifierBukkit import com.vexsoftware.votifier.VoteHandler -import dev.mikchan.mcnp.votereceiver.config.IConfig -import dev.mikchan.mcnp.votereceiver.utility.IUtility +import dev.mikchan.mcnp.votereceiver.core.config.IConfig +import dev.mikchan.mcnp.votereceiver.core.utility.IUtility import io.ktor.server.engine.* /** diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/core/log/ILogger.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/core/log/ILogger.kt new file mode 100644 index 0000000..bea1fe3 --- /dev/null +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/core/log/ILogger.kt @@ -0,0 +1,21 @@ +package dev.mikchan.mcnp.votereceiver.core.log + +/** + * Common logger interface + */ +interface ILogger { + /** + * Logs info message + * + * @param msg The message + */ + fun info(msg: String) + + /** + * Logs warning message + * + * @param msg The message + * @param exception The exception + */ + fun warning(msg: String?, exception: Throwable? = null) +} diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/core/log/JvmLoggerProxy.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/core/log/JvmLoggerProxy.kt new file mode 100644 index 0000000..eb7ef37 --- /dev/null +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/core/log/JvmLoggerProxy.kt @@ -0,0 +1,18 @@ +package dev.mikchan.mcnp.votereceiver.core.log + +import java.util.logging.Level +import java.util.logging.Logger + +internal class JvmLoggerProxy(private val logger: Logger) : ILogger { + override fun info(msg: String) { + logger.info(msg) + } + + override fun warning(msg: String?, exception: Throwable?) { + if (exception != null) { + logger.log(Level.WARNING, msg, exception) + } else { + logger.warning(msg) + } + } +} diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/core/log/Sl4jLoggerProxy.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/core/log/Sl4jLoggerProxy.kt new file mode 100644 index 0000000..8764c1b --- /dev/null +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/core/log/Sl4jLoggerProxy.kt @@ -0,0 +1,17 @@ +package dev.mikchan.mcnp.votereceiver.core.log + +import org.slf4j.Logger + +internal class Sl4jLoggerProxy(private val logger: Logger) : ILogger { + override fun info(msg: String) { + logger.info(msg) + } + + override fun warning(msg: String?, exception: Throwable?) { + if (exception != null) { + logger.warn(msg, exception) + } else { + logger.warn(msg) + } + } +} diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/utility/IUtility.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/core/utility/IUtility.kt similarity index 87% rename from src/main/java/dev/mikchan/mcnp/votereceiver/utility/IUtility.kt rename to src/main/java/dev/mikchan/mcnp/votereceiver/core/utility/IUtility.kt index 06120e1..8f7ef67 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/utility/IUtility.kt +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/core/utility/IUtility.kt @@ -1,4 +1,4 @@ -package dev.mikchan.mcnp.votereceiver.utility +package dev.mikchan.mcnp.votereceiver.core.utility /** * Utility diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/utility/base/Utility.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/core/utility/base/Utility.kt similarity index 73% rename from src/main/java/dev/mikchan/mcnp/votereceiver/utility/base/Utility.kt rename to src/main/java/dev/mikchan/mcnp/votereceiver/core/utility/base/Utility.kt index 98262e4..30a87b3 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/utility/base/Utility.kt +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/core/utility/base/Utility.kt @@ -1,6 +1,6 @@ -package dev.mikchan.mcnp.votereceiver.utility.base +package dev.mikchan.mcnp.votereceiver.core.utility.base -import dev.mikchan.mcnp.votereceiver.utility.IUtility +import dev.mikchan.mcnp.votereceiver.core.utility.IUtility import java.security.MessageDigest internal class Utility : IUtility { diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/core/web/BuildRoutes.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/core/web/BuildRoutes.kt new file mode 100644 index 0000000..33b815b --- /dev/null +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/core/web/BuildRoutes.kt @@ -0,0 +1,16 @@ +package dev.mikchan.mcnp.votereceiver.core.web + +import dev.mikchan.mcnp.votereceiver.core.IPlugin +import io.ktor.server.application.* +import io.ktor.server.routing.* + +internal fun Application.buildRoutes(plugin: IPlugin) { + routing { + createMineServTopRoute(plugin) + createTMonitoringComRoute(plugin) + + if (plugin.config.testEnabled) { + createTestRoute(plugin) + } + } +} diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/web/MineServTopRoute.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/core/web/MineServTopRoute.kt similarity index 94% rename from src/main/java/dev/mikchan/mcnp/votereceiver/web/MineServTopRoute.kt rename to src/main/java/dev/mikchan/mcnp/votereceiver/core/web/MineServTopRoute.kt index 4e8a39f..d365540 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/web/MineServTopRoute.kt +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/core/web/MineServTopRoute.kt @@ -1,8 +1,8 @@ -package dev.mikchan.mcnp.votereceiver.web +package dev.mikchan.mcnp.votereceiver.core.web import com.vexsoftware.votifier.model.Vote import com.vexsoftware.votifier.net.VotifierSession -import dev.mikchan.mcnp.votereceiver.IPlugin +import dev.mikchan.mcnp.votereceiver.core.IPlugin import io.ktor.http.* import io.ktor.server.application.* import io.ktor.server.plugins.* diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/web/TMonitoringComRoute.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/core/web/TMonitoringComRoute.kt similarity index 91% rename from src/main/java/dev/mikchan/mcnp/votereceiver/web/TMonitoringComRoute.kt rename to src/main/java/dev/mikchan/mcnp/votereceiver/core/web/TMonitoringComRoute.kt index 3f6f545..7864962 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/web/TMonitoringComRoute.kt +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/core/web/TMonitoringComRoute.kt @@ -1,9 +1,9 @@ -package dev.mikchan.mcnp.votereceiver.web +package dev.mikchan.mcnp.votereceiver.core.web import com.vexsoftware.votifier.model.Vote import com.vexsoftware.votifier.net.VotifierSession import de.ailis.pherialize.Pherialize -import dev.mikchan.mcnp.votereceiver.IPlugin +import dev.mikchan.mcnp.votereceiver.core.IPlugin import io.ktor.server.application.* import io.ktor.server.plugins.* import io.ktor.server.response.* @@ -12,7 +12,6 @@ import java.net.URI import java.net.http.HttpClient import java.net.http.HttpRequest import java.net.http.HttpResponse -import java.util.logging.Level /** * Reference `https://tmonitoring.com/uploads/files/top.zip` @@ -52,7 +51,7 @@ internal fun Route.createTMonitoringComRoute(plugin: IPlugin) { plugin.voteHandler?.onVoteReceived(vote, VotifierSession.ProtocolVersion.UNKNOWN, address) } catch (ex: Exception) { - plugin.log.log(Level.WARNING, ex.message, ex) + plugin.log.warning(ex.message, ex) } } } diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/web/TestRoute.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/core/web/TestRoute.kt similarity index 91% rename from src/main/java/dev/mikchan/mcnp/votereceiver/web/TestRoute.kt rename to src/main/java/dev/mikchan/mcnp/votereceiver/core/web/TestRoute.kt index 164e3bf..faba847 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/web/TestRoute.kt +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/core/web/TestRoute.kt @@ -1,8 +1,8 @@ -package dev.mikchan.mcnp.votereceiver.web +package dev.mikchan.mcnp.votereceiver.core.web import com.vexsoftware.votifier.model.Vote import com.vexsoftware.votifier.net.VotifierSession -import dev.mikchan.mcnp.votereceiver.IPlugin +import dev.mikchan.mcnp.votereceiver.core.IPlugin import io.ktor.http.* import io.ktor.server.application.* import io.ktor.server.plugins.* diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/factory/bungee/BungeeCordFactory.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/factory/bungee/BungeeCordFactory.kt deleted file mode 100644 index 2375fc3..0000000 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/factory/bungee/BungeeCordFactory.kt +++ /dev/null @@ -1,51 +0,0 @@ -package dev.mikchan.mcnp.votereceiver.factory.bungee - -import com.vexsoftware.votifier.bungee.NuVotifier -import dev.mikchan.mcnp.votereceiver.VoteReceiverBungeeCordPlugin -import dev.mikchan.mcnp.votereceiver.config.IConfig -import dev.mikchan.mcnp.votereceiver.config.boosted.BoostedYamlConfig -import dev.mikchan.mcnp.votereceiver.config.fallback.FallbackConfig -import dev.mikchan.mcnp.votereceiver.factory.IFactory -import dev.mikchan.mcnp.votereceiver.utility.IUtility -import dev.mikchan.mcnp.votereceiver.utility.base.Utility -import dev.mikchan.mcnp.votereceiver.web.createMineServTopRoute -import dev.mikchan.mcnp.votereceiver.web.createTMonitoringComRoute -import dev.mikchan.mcnp.votereceiver.web.createTestRoute -import io.ktor.server.engine.* -import io.ktor.server.netty.* -import io.ktor.server.routing.* -import net.md_5.bungee.api.ProxyServer -import java.io.File - -internal class BungeeCordFactory(private val plugin: VoteReceiverBungeeCordPlugin) : IFactory { - override fun createConfig(): IConfig { - val resource = plugin.getResourceAsStream("config.yml") - - return if (resource != null) { - BoostedYamlConfig(File(plugin.dataFolder, "config.yml"), resource) - } else { - FallbackConfig() - } - } - - override fun createUtility(): IUtility { - return Utility() - } - - override fun createApplicationEngine(): ApplicationEngine { - return embeddedServer(Netty, port = plugin.config.port) { - routing { - createMineServTopRoute(plugin) - createTMonitoringComRoute(plugin) - - if (plugin.config.testEnabled) { - createTestRoute(plugin) - } - } - } - } - - override fun createVoteHandler(): NuVotifier? { - return ProxyServer.getInstance().pluginManager.getPlugin("NuVotifier") as? NuVotifier - } -} diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/factory/spigot/SpigotFactory.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/factory/spigot/SpigotFactory.kt deleted file mode 100644 index 6cf6a38..0000000 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/factory/spigot/SpigotFactory.kt +++ /dev/null @@ -1,50 +0,0 @@ -package dev.mikchan.mcnp.votereceiver.factory.spigot - -import com.vexsoftware.votifier.NuVotifierBukkit -import dev.mikchan.mcnp.votereceiver.VoteReceiverSpigotPlugin -import dev.mikchan.mcnp.votereceiver.config.IConfig -import dev.mikchan.mcnp.votereceiver.config.boosted.BoostedYamlConfig -import dev.mikchan.mcnp.votereceiver.config.fallback.FallbackConfig -import dev.mikchan.mcnp.votereceiver.factory.IFactory -import dev.mikchan.mcnp.votereceiver.utility.IUtility -import dev.mikchan.mcnp.votereceiver.utility.base.Utility -import dev.mikchan.mcnp.votereceiver.web.createMineServTopRoute -import dev.mikchan.mcnp.votereceiver.web.createTMonitoringComRoute -import dev.mikchan.mcnp.votereceiver.web.createTestRoute -import io.ktor.server.engine.* -import io.ktor.server.netty.* -import io.ktor.server.routing.* -import java.io.File - -internal class SpigotFactory(private val plugin: VoteReceiverSpigotPlugin) : IFactory { - override fun createConfig(): IConfig { - val resource = plugin.getResource("config.yml") - - return if (resource != null) { - BoostedYamlConfig(File(plugin.dataFolder, "config.yml"), resource) - } else { - FallbackConfig() - } - } - - override fun createUtility(): IUtility { - return Utility() - } - - override fun createApplicationEngine(): ApplicationEngine { - return embeddedServer(Netty, port = plugin.config.port) { - routing { - createMineServTopRoute(plugin) - createTMonitoringComRoute(plugin) - - if (plugin.config.testEnabled) { - createTestRoute(plugin) - } - } - } - } - - override fun createVoteHandler(): NuVotifierBukkit? { - return plugin.server.pluginManager.getPlugin("Votifier") as? NuVotifierBukkit - } -} diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverSpigotPlugin.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/spigot/VoteReceiverSpigotPlugin.kt similarity index 70% rename from src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverSpigotPlugin.kt rename to src/main/java/dev/mikchan/mcnp/votereceiver/spigot/VoteReceiverSpigotPlugin.kt index d084980..8f5bb94 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/VoteReceiverSpigotPlugin.kt +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/spigot/VoteReceiverSpigotPlugin.kt @@ -1,10 +1,13 @@ -package dev.mikchan.mcnp.votereceiver +package dev.mikchan.mcnp.votereceiver.spigot import com.vexsoftware.votifier.VoteHandler -import dev.mikchan.mcnp.votereceiver.config.IConfig -import dev.mikchan.mcnp.votereceiver.factory.IFactory -import dev.mikchan.mcnp.votereceiver.factory.spigot.SpigotFactory -import dev.mikchan.mcnp.votereceiver.utility.IUtility +import dev.mikchan.mcnp.votereceiver.core.IPlugin +import dev.mikchan.mcnp.votereceiver.core.config.IConfig +import dev.mikchan.mcnp.votereceiver.core.factory.IFactory +import dev.mikchan.mcnp.votereceiver.core.log.ILogger +import dev.mikchan.mcnp.votereceiver.core.log.JvmLoggerProxy +import dev.mikchan.mcnp.votereceiver.core.utility.IUtility +import dev.mikchan.mcnp.votereceiver.spigot.factory.SpigotFactory import io.ktor.server.application.* import io.ktor.server.engine.* import io.ktor.server.netty.* @@ -15,7 +18,6 @@ import org.bstats.bukkit.Metrics import org.bukkit.plugin.java.JavaPlugin import java.util.concurrent.ExecutorService import java.util.concurrent.Executors -import java.util.logging.Logger /** @@ -34,7 +36,7 @@ class VoteReceiverSpigotPlugin : JavaPlugin(), IPlugin { override val voteHandler: VoteHandler? by lazy { factory.createVoteHandler() } override val threadPool: ExecutorService by lazy { Executors.newSingleThreadExecutor() } override val webServer: ApplicationEngine by lazy { factory.createApplicationEngine() } - override val log: Logger get() = this.logger + override val log: ILogger by lazy { JvmLoggerProxy(this.logger) } override fun onEnable() { webServer.start() diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/spigot/factory/SpigotFactory.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/spigot/factory/SpigotFactory.kt new file mode 100644 index 0000000..22e8a27 --- /dev/null +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/spigot/factory/SpigotFactory.kt @@ -0,0 +1,19 @@ +package dev.mikchan.mcnp.votereceiver.spigot.factory + +import com.vexsoftware.votifier.NuVotifierBukkit +import dev.mikchan.mcnp.votereceiver.core.config.IConfig +import dev.mikchan.mcnp.votereceiver.core.factory.CommonFactory +import dev.mikchan.mcnp.votereceiver.spigot.VoteReceiverSpigotPlugin +import java.io.File + +internal class SpigotFactory(private val plugin: VoteReceiverSpigotPlugin) : CommonFactory(plugin) { + override fun createConfig(): IConfig { + val resource = plugin.getResource("config.yml") + val document = File(plugin.dataFolder, "config.yml") + return createConfig(document, resource) + } + + override fun createVoteHandler(): NuVotifierBukkit? { + return plugin.server.pluginManager.getPlugin("Votifier") as? NuVotifierBukkit + } +} diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPlugin.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPlugin.kt new file mode 100644 index 0000000..8b79f13 --- /dev/null +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPlugin.kt @@ -0,0 +1,24 @@ +package dev.mikchan.mcnp.votereceiver.velocity + +import com.vexsoftware.votifier.VoteHandler +import dev.mikchan.mcnp.votereceiver.core.IPlugin +import dev.mikchan.mcnp.votereceiver.core.config.IConfig +import dev.mikchan.mcnp.votereceiver.core.factory.IFactory +import dev.mikchan.mcnp.votereceiver.core.log.ILogger +import dev.mikchan.mcnp.votereceiver.core.log.Sl4jLoggerProxy +import dev.mikchan.mcnp.votereceiver.core.utility.IUtility +import dev.mikchan.mcnp.votereceiver.velocity.factory.VelocityFactory +import io.ktor.server.engine.* +import java.util.concurrent.ExecutorService +import java.util.concurrent.Executors + +internal class VoteReceiverVelocityPlugin(val velocity: VoteReceiverVelocityPluginWrapper) : IPlugin { + private val factory: IFactory by lazy { VelocityFactory(this) } + + override val config: IConfig by lazy { factory.createConfig() } + override val utility: IUtility by lazy { factory.createUtility() } + override val voteHandler: VoteHandler? by lazy { factory.createVoteHandler() } + override val threadPool: ExecutorService by lazy { Executors.newSingleThreadExecutor() } + override val webServer: ApplicationEngine by lazy { factory.createApplicationEngine() } + override val log: ILogger by lazy { Sl4jLoggerProxy(velocity.logger) } +} diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java new file mode 100644 index 0000000..65cb5ff --- /dev/null +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java @@ -0,0 +1,120 @@ +package dev.mikchan.mcnp.votereceiver.velocity; + +import com.google.inject.Inject; +import com.velocitypowered.api.event.Subscribe; +import com.velocitypowered.api.event.proxy.ProxyInitializeEvent; +import com.velocitypowered.api.event.proxy.ProxyShutdownEvent; +import com.velocitypowered.api.plugin.Dependency; +import com.velocitypowered.api.plugin.Plugin; +import com.velocitypowered.api.plugin.annotation.DataDirectory; +import com.velocitypowered.api.proxy.ProxyServer; +import dev.jeka.core.api.depmanagement.JkDependencySet; +import dev.jeka.core.api.depmanagement.JkRepo; +import dev.jeka.core.api.depmanagement.resolution.JkDependencyResolver; +import org.slf4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.file.Path; +import java.util.List; + +@Plugin(id = "mcn_vote-receiver", name = "MikChanNoVoteReceiver", version = "0.1.0-SNAPSHOT", + url = "https://github.com/MikChanNoPlugins/VoteReceiver", + description = "Converts various monitoring vote systems to Votifier", + authors = {"George Endo (wtlgo / MikChan)"}, dependencies = {@Dependency(id = "nuvotifier")}) +public class VoteReceiverVelocityPluginWrapper { + private final ProxyServer server; + private final Logger logger; + + private final Path dataDirectory; + + @Inject + public VoteReceiverVelocityPluginWrapper(ProxyServer server, Logger logger, @DataDirectory Path dataDirectory) { + this.server = server; + this.logger = logger; + this.dataDirectory = dataDirectory; + } + + public ProxyServer getServer() { + return server; + } + + public Logger getLogger() { + return logger; + } + + public Path getDataDirectory() { + return dataDirectory; + } + + private VoteReceiverVelocityPlugin plugin; + + @Subscribe + public void onProxyInitialization(ProxyInitializeEvent event) { + registerDependencies(); + plugin = new VoteReceiverVelocityPlugin(this); + + plugin.getWebServer().start(true); + } + + @Subscribe + void onProxyShutdownEvent(ProxyShutdownEvent event) { + plugin.getWebServer().stop(500, 500); + plugin.getThreadPool().shutdown(); + } + + private void download(URL url, File location) { + try { + if (logger != null) logger.info("Downloading " + url + "..."); + + //noinspection ResultOfMethodCallIgnored + location.getParentFile().mkdirs(); + + try (BufferedInputStream in = new BufferedInputStream(url.openStream()); + FileOutputStream output = new FileOutputStream(location)) { + byte[] buffer = new byte[1024]; + int bytes; + while ((bytes = in.read(buffer, 0, 1024)) != -1) { + output.write(buffer, 0, bytes); + } + } + } catch (Exception exception) { + if (logger != null) logger.error("Failed to download " + url + "..."); + throw new RuntimeException(exception); + } + } + + + private void registerDependencies() { + try { + final URL jekaUrl = new URL( + "https://repo1.maven.org/maven2/dev/jeka/jeka-core/0.10.11/jeka-core-0.10.11.jar"); + final File jekaPath = new File(getDataDirectory().toFile(), "libs"); + //noinspection ResultOfMethodCallIgnored + jekaPath.mkdirs(); + + final File jekaFile = new File(jekaPath, "jeka-core-0.10.11.jar"); + if (!jekaFile.exists()) { + download(jekaUrl, jekaFile); + } + + getServer().getPluginManager().addToClasspath(this, jekaFile.toPath()); + } catch (MalformedURLException e) { + throw new RuntimeException(e); + } + + final JkDependencySet deps = JkDependencySet.of().and("org.jetbrains.kotlin:kotlin-stdlib:1.8.10").and( + "io.ktor:ktor-server-core:2.2.4").and("io.ktor:ktor-server-core-jvm:2.2.4").and( + "io.ktor:ktor-server-netty:2.2.4").and("io.ktor:ktor-server-netty-jvm:2.2.4").and( + "dev.dejvokep:boosted-yaml:1.3").and("com.xk72:pherialize:1.2.4"); + final JkDependencyResolver resolver = JkDependencyResolver.of().setRepos(JkRepo.ofMavenCentral().toSet()); + final List paths = resolver.resolve(deps).getFiles().getEntries(); + + for (final Path path : paths) { + getServer().getPluginManager().addToClasspath(this, path); + } + } +} diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/factory/VelocityFactory.kt b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/factory/VelocityFactory.kt new file mode 100644 index 0000000..5211dd8 --- /dev/null +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/factory/VelocityFactory.kt @@ -0,0 +1,20 @@ +package dev.mikchan.mcnp.votereceiver.velocity.factory + +import com.vexsoftware.votifier.VoteHandler +import dev.mikchan.mcnp.votereceiver.core.config.IConfig +import dev.mikchan.mcnp.votereceiver.core.factory.CommonFactory +import dev.mikchan.mcnp.votereceiver.velocity.VoteReceiverVelocityPlugin +import java.io.File +import kotlin.jvm.optionals.getOrNull + +internal class VelocityFactory(private val plugin: VoteReceiverVelocityPlugin) : CommonFactory(plugin) { + override fun createConfig(): IConfig { + val resource = this.javaClass.classLoader.getResourceAsStream("config.yml") + val document = File(plugin.velocity.dataDirectory.toFile(), "config.yml") + return createConfig(document, resource) + } + + override fun createVoteHandler(): VoteHandler? { + return plugin.velocity.server.pluginManager.getPlugin("nuvotifier").getOrNull()?.instance?.get() as? VoteHandler + } +} diff --git a/src/main/resources/bungee.yml b/src/main/resources/bungee.yml index 2882189..85148f1 100644 --- a/src/main/resources/bungee.yml +++ b/src/main/resources/bungee.yml @@ -7,7 +7,7 @@ website: https://github.com/MikChanNoPlugins prefix: MCnVoteReceiver api-version: 1.19 -main: dev.mikchan.mcnp.votereceiver.VoteReceiverBungeeCordPlugin +main: dev.mikchan.mcnp.votereceiver.bungee.VoteReceiverBungeeCordPlugin depend: - NuVotifier diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 3c95c01..b3eb73a 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -7,7 +7,7 @@ website: https://github.com/MikChanNoPlugins prefix: MCnVoteReceiver api-version: 1.19 -main: dev.mikchan.mcnp.votereceiver.VoteReceiverSpigotPlugin +main: dev.mikchan.mcnp.votereceiver.spigot.VoteReceiverSpigotPlugin depend: - Votifier From 99380e3bc3f5af5bd84652c6fac52e778126419e Mon Sep 17 00:00:00 2001 From: wtlgo Date: Mon, 27 Mar 2023 13:25:53 +0300 Subject: [PATCH 10/19] Remove this trash... --- build.gradle | 9 --------- 1 file changed, 9 deletions(-) diff --git a/build.gradle b/build.gradle index bc5359e..8fcdad1 100644 --- a/build.gradle +++ b/build.gradle @@ -58,15 +58,6 @@ repositories { name = 'papermc' url = 'https://repo.papermc.io/repository/maven-public/' } - - maven { - name = "GitHub/MikChanNoPlugins/Utility.DependencyDownloader" - url = "https://maven.pkg.github.com/MikChanNoPlugins/Utility.DependencyDownloader" - credentials { - username = localProperties['user'] ?: System.getenv("GITHUB_ACTOR") - password = localProperties['key'] ?: System.getenv("GITHUB_TOKEN") - } - } } dependencies { From 925b8ed041d0c447c8146f05eda6c5ac2a308dd1 Mon Sep 17 00:00:00 2001 From: wtlgo Date: Mon, 27 Mar 2023 13:38:48 +0300 Subject: [PATCH 11/19] Re-format java code --- .../VoteReceiverVelocityPluginWrapper.java | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java index 65cb5ff..76699dc 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java @@ -21,18 +21,24 @@ import java.nio.file.Path; import java.util.List; -@Plugin(id = "mcn_vote-receiver", name = "MikChanNoVoteReceiver", version = "0.1.0-SNAPSHOT", +@Plugin(id = "mcn_vote-receiver", + name = "MikChanNoVoteReceiver", + version = "0.1.0-SNAPSHOT", url = "https://github.com/MikChanNoPlugins/VoteReceiver", description = "Converts various monitoring vote systems to Votifier", - authors = {"George Endo (wtlgo / MikChan)"}, dependencies = {@Dependency(id = "nuvotifier")}) + authors = {"George Endo (wtlgo / MikChan)"}, + dependencies = {@Dependency(id = "nuvotifier")}) public class VoteReceiverVelocityPluginWrapper { private final ProxyServer server; private final Logger logger; private final Path dataDirectory; + private VoteReceiverVelocityPlugin plugin; @Inject - public VoteReceiverVelocityPluginWrapper(ProxyServer server, Logger logger, @DataDirectory Path dataDirectory) { + public VoteReceiverVelocityPluginWrapper(ProxyServer server, Logger logger, + @DataDirectory + Path dataDirectory) { this.server = server; this.logger = logger; this.dataDirectory = dataDirectory; @@ -50,8 +56,6 @@ public Path getDataDirectory() { return dataDirectory; } - private VoteReceiverVelocityPlugin plugin; - @Subscribe public void onProxyInitialization(ProxyInitializeEvent event) { registerDependencies(); @@ -73,7 +77,8 @@ private void download(URL url, File location) { //noinspection ResultOfMethodCallIgnored location.getParentFile().mkdirs(); - try (BufferedInputStream in = new BufferedInputStream(url.openStream()); + try (BufferedInputStream in = new BufferedInputStream( + url.openStream()); FileOutputStream output = new FileOutputStream(location)) { byte[] buffer = new byte[1024]; int bytes; @@ -82,7 +87,8 @@ private void download(URL url, File location) { } } } catch (Exception exception) { - if (logger != null) logger.error("Failed to download " + url + "..."); + if (logger != null) + logger.error("Failed to download " + url + "..."); throw new RuntimeException(exception); } } @@ -90,8 +96,8 @@ private void download(URL url, File location) { private void registerDependencies() { try { - final URL jekaUrl = new URL( - "https://repo1.maven.org/maven2/dev/jeka/jeka-core/0.10.11/jeka-core-0.10.11.jar"); + final URL jekaUrl = + new URL("https://repo1.maven.org/maven2/dev/jeka/jeka-core/0.10.11/jeka-core-0.10.11.jar"); final File jekaPath = new File(getDataDirectory().toFile(), "libs"); //noinspection ResultOfMethodCallIgnored jekaPath.mkdirs(); @@ -101,16 +107,22 @@ private void registerDependencies() { download(jekaUrl, jekaFile); } - getServer().getPluginManager().addToClasspath(this, jekaFile.toPath()); + getServer().getPluginManager() + .addToClasspath(this, jekaFile.toPath()); } catch (MalformedURLException e) { throw new RuntimeException(e); } - final JkDependencySet deps = JkDependencySet.of().and("org.jetbrains.kotlin:kotlin-stdlib:1.8.10").and( - "io.ktor:ktor-server-core:2.2.4").and("io.ktor:ktor-server-core-jvm:2.2.4").and( - "io.ktor:ktor-server-netty:2.2.4").and("io.ktor:ktor-server-netty-jvm:2.2.4").and( - "dev.dejvokep:boosted-yaml:1.3").and("com.xk72:pherialize:1.2.4"); - final JkDependencyResolver resolver = JkDependencyResolver.of().setRepos(JkRepo.ofMavenCentral().toSet()); + final JkDependencySet deps = JkDependencySet.of() + .and("org.jetbrains.kotlin:kotlin-stdlib:1.8.10") + .and("io.ktor:ktor-server-core:2.2.4") + .and("io.ktor:ktor-server-core-jvm:2.2.4") + .and("io.ktor:ktor-server-netty:2.2.4") + .and("io.ktor:ktor-server-netty-jvm:2.2.4") + .and("dev.dejvokep:boosted-yaml:1.3") + .and("com.xk72:pherialize:1.2.4"); + final JkDependencyResolver resolver = JkDependencyResolver.of() + .setRepos(JkRepo.ofMavenCentral().toSet()); final List paths = resolver.resolve(deps).getFiles().getEntries(); for (final Path path : paths) { From e97ff82946f828f83ccd0803b1f9c17828c785f8 Mon Sep 17 00:00:00 2001 From: wtlgo Date: Mon, 27 Mar 2023 13:53:08 +0300 Subject: [PATCH 12/19] Fix codacy issues --- .../VoteReceiverVelocityPluginWrapper.java | 74 +++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java index 76699dc..7c21b3e 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java @@ -16,7 +16,7 @@ import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; -import java.net.MalformedURLException; +import java.io.IOException; import java.net.URL; import java.nio.file.Path; import java.util.List; @@ -30,9 +30,11 @@ dependencies = {@Dependency(id = "nuvotifier")}) public class VoteReceiverVelocityPluginWrapper { private final ProxyServer server; + private final Logger logger; private final Path dataDirectory; + private VoteReceiverVelocityPlugin plugin; @Inject @@ -58,61 +60,59 @@ public Path getDataDirectory() { @Subscribe public void onProxyInitialization(ProxyInitializeEvent event) { - registerDependencies(); - plugin = new VoteReceiverVelocityPlugin(this); + try { + registerDependencies(); - plugin.getWebServer().start(true); + plugin = new VoteReceiverVelocityPlugin(this); + plugin.getWebServer().start(true); + } catch (IOException e) { + logger.error("Unable to enable plugin"); + } } @Subscribe void onProxyShutdownEvent(ProxyShutdownEvent event) { + if (plugin == null) return; plugin.getWebServer().stop(500, 500); plugin.getThreadPool().shutdown(); } - private void download(URL url, File location) { - try { - if (logger != null) logger.info("Downloading " + url + "..."); - - //noinspection ResultOfMethodCallIgnored - location.getParentFile().mkdirs(); - - try (BufferedInputStream in = new BufferedInputStream( - url.openStream()); - FileOutputStream output = new FileOutputStream(location)) { - byte[] buffer = new byte[1024]; - int bytes; - while ((bytes = in.read(buffer, 0, 1024)) != -1) { - output.write(buffer, 0, bytes); - } + private void download(URL url, File location) throws IOException { + if (logger != null) logger.info("Downloading " + url + "..."); + + //noinspection ResultOfMethodCallIgnored + location.getParentFile().mkdirs(); + + try (BufferedInputStream in = new BufferedInputStream(url.openStream()); + FileOutputStream output = new FileOutputStream(location)) { + byte[] buffer = new byte[1024]; + int bytes; + while ((bytes = in.read(buffer, 0, 1024)) != -1) { + output.write(buffer, 0, bytes); } - } catch (Exception exception) { + } catch (IOException e) { if (logger != null) logger.error("Failed to download " + url + "..."); - throw new RuntimeException(exception); + throw e; } } - private void registerDependencies() { - try { - final URL jekaUrl = - new URL("https://repo1.maven.org/maven2/dev/jeka/jeka-core/0.10.11/jeka-core-0.10.11.jar"); - final File jekaPath = new File(getDataDirectory().toFile(), "libs"); - //noinspection ResultOfMethodCallIgnored - jekaPath.mkdirs(); - - final File jekaFile = new File(jekaPath, "jeka-core-0.10.11.jar"); - if (!jekaFile.exists()) { - download(jekaUrl, jekaFile); - } + private void registerDependencies() throws IOException { + final File jekaPath = new File(getDataDirectory().toFile(), "libs"); + //noinspection ResultOfMethodCallIgnored + jekaPath.mkdirs(); - getServer().getPluginManager() - .addToClasspath(this, jekaFile.toPath()); - } catch (MalformedURLException e) { - throw new RuntimeException(e); + final File jekaFile = new File(jekaPath, "jeka-core-0.10.11.jar"); + if (!jekaFile.exists()) { + final URL jekaUrl = new URL("https", "repo1.maven.org", + "maven2/dev/jeka/jeka-core/0.10.11/jeka-core-0.10.11.jar"); + download(jekaUrl, jekaFile); } + getServer().getPluginManager().addToClasspath(this, jekaFile.toPath()); + + final JkDependencySet deps = JkDependencySet.of() .and("org.jetbrains.kotlin:kotlin-stdlib:1.8.10") .and("io.ktor:ktor-server-core:2.2.4") From cbe8b285a9cfaba02483df96f63121ce366edd5a Mon Sep 17 00:00:00 2001 From: wtlgo Date: Wed, 5 Apr 2023 10:46:35 +0300 Subject: [PATCH 13/19] Bump dependency versions --- build.gradle | 4 ++-- .../velocity/VoteReceiverVelocityPluginWrapper.java | 6 +++--- src/main/resources/bungee.yml | 2 +- src/main/resources/plugin.yml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index 8fcdad1..0eb887a 100644 --- a/build.gradle +++ b/build.gradle @@ -72,13 +72,13 @@ dependencies { compileOnly "com.github.NuVotifier.NuVotifier:nuvotifier-api:2.7.2" compileOnly "com.github.NuVotifier.NuVotifier:nuvotifier-common:2.7.2" - implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.10" + implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.20" implementation "io.ktor:ktor-server-core:2.2.4" implementation "io.ktor:ktor-server-netty:2.2.4" implementation "dev.dejvokep:boosted-yaml:1.3" implementation "com.xk72:pherialize:1.2.4" - implementation "dev.jeka:jeka-core:0.10.11" + implementation "dev.jeka:jeka-core:0.10.12" shadow "org.bstats:bstats-bukkit:3.0.1" } diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java index 7c21b3e..4dacfbf 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java @@ -103,10 +103,10 @@ private void registerDependencies() throws IOException { //noinspection ResultOfMethodCallIgnored jekaPath.mkdirs(); - final File jekaFile = new File(jekaPath, "jeka-core-0.10.11.jar"); + final File jekaFile = new File(jekaPath, "jeka-core-0.10.12.jar"); if (!jekaFile.exists()) { final URL jekaUrl = new URL("https", "repo1.maven.org", - "maven2/dev/jeka/jeka-core/0.10.11/jeka-core-0.10.11.jar"); + "maven2/dev/jeka/jeka-core/0.10.11/jeka-core-0.10.12.jar"); download(jekaUrl, jekaFile); } @@ -114,7 +114,7 @@ private void registerDependencies() throws IOException { final JkDependencySet deps = JkDependencySet.of() - .and("org.jetbrains.kotlin:kotlin-stdlib:1.8.10") + .and("org.jetbrains.kotlin:kotlin-stdlib:1.8.20") .and("io.ktor:ktor-server-core:2.2.4") .and("io.ktor:ktor-server-core-jvm:2.2.4") .and("io.ktor:ktor-server-netty:2.2.4") diff --git a/src/main/resources/bungee.yml b/src/main/resources/bungee.yml index 85148f1..9762421 100644 --- a/src/main/resources/bungee.yml +++ b/src/main/resources/bungee.yml @@ -15,7 +15,7 @@ depend: load: STARTUP libraries: - - org.jetbrains.kotlin:kotlin-stdlib:1.8.10 + - org.jetbrains.kotlin:kotlin-stdlib:1.8.20 - io.ktor:ktor-server-core:2.2.4 - io.ktor:ktor-server-core-jvm:2.2.4 - io.ktor:ktor-server-netty:2.2.4 diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index b3eb73a..49b937a 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -15,7 +15,7 @@ depend: load: STARTUP libraries: - - org.jetbrains.kotlin:kotlin-stdlib:1.8.10 + - org.jetbrains.kotlin:kotlin-stdlib:1.8.20 - io.ktor:ktor-server-core:2.2.4 - io.ktor:ktor-server-core-jvm:2.2.4 - io.ktor:ktor-server-netty:2.2.4 From 3b8ebe2b24fc587a2fc89c43f3c4f27bb85f975b Mon Sep 17 00:00:00 2001 From: wtlgo Date: Wed, 5 Apr 2023 10:59:01 +0300 Subject: [PATCH 14/19] Change cache dir --- .../VoteReceiverVelocityPluginWrapper.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java index 4dacfbf..44b0159 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java @@ -20,6 +20,7 @@ import java.net.URL; import java.nio.file.Path; import java.util.List; +import java.util.Properties; @Plugin(id = "mcn_vote-receiver", name = "MikChanNoVoteReceiver", @@ -99,19 +100,23 @@ private void download(URL url, File location) throws IOException { private void registerDependencies() throws IOException { - final File jekaPath = new File(getDataDirectory().toFile(), "libs"); + final File libsPath = new File(getDataDirectory().toFile(), "libs"); //noinspection ResultOfMethodCallIgnored - jekaPath.mkdirs(); + libsPath.mkdirs(); - final File jekaFile = new File(jekaPath, "jeka-core-0.10.12.jar"); + final File jekaFile = new File(libsPath, "jeka-core-0.10.12.jar"); if (!jekaFile.exists()) { final URL jekaUrl = new URL("https", "repo1.maven.org", - "maven2/dev/jeka/jeka-core/0.10.11/jeka-core-0.10.12.jar"); + "maven2/dev/jeka/jeka-core/0.10.12/jeka-core-0.10.12.jar"); download(jekaUrl, jekaFile); } getServer().getPluginManager().addToClasspath(this, jekaFile.toPath()); + final Properties props = System.getProperties(); + final Object oldJekaCacheDir = props.get("jeka.cache.dir"); + + props.put("jeka.cache.dir", new File(libsPath, "cache").toString()); final JkDependencySet deps = JkDependencySet.of() .and("org.jetbrains.kotlin:kotlin-stdlib:1.8.20") @@ -125,6 +130,12 @@ private void registerDependencies() throws IOException { .setRepos(JkRepo.ofMavenCentral().toSet()); final List paths = resolver.resolve(deps).getFiles().getEntries(); + if (oldJekaCacheDir != null) { + props.put("jeka.cache.dir", oldJekaCacheDir); + } else { + props.remove("jeka.cache.dir"); + } + for (final Path path : paths) { getServer().getPluginManager().addToClasspath(this, path); } From fb126f12c3d451e541b495d076850551d0926f17 Mon Sep 17 00:00:00 2001 From: wtlgo Date: Wed, 5 Apr 2023 11:05:03 +0300 Subject: [PATCH 15/19] Change cache dir --- .../VoteReceiverVelocityPluginWrapper.java | 60 ++++++++++--------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java index 44b0159..a7a5ebe 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java @@ -47,6 +47,21 @@ public VoteReceiverVelocityPluginWrapper(ProxyServer server, Logger logger, this.dataDirectory = dataDirectory; } + private static void withJekaPath(File path, Runnable runnable) { + final Properties props = System.getProperties(); + final String jekaCacheDirProp = "jeka.cache.dir"; + final Object oldJekaCacheDir = props.get(jekaCacheDirProp); + props.put(jekaCacheDirProp, path.toString()); + + runnable.run(); + + if (oldJekaCacheDir != null) { + props.put(jekaCacheDirProp, oldJekaCacheDir); + } else { + props.remove(jekaCacheDirProp); + } + } + public ProxyServer getServer() { return server; } @@ -98,7 +113,6 @@ private void download(URL url, File location) throws IOException { } } - private void registerDependencies() throws IOException { final File libsPath = new File(getDataDirectory().toFile(), "libs"); //noinspection ResultOfMethodCallIgnored @@ -113,31 +127,23 @@ private void registerDependencies() throws IOException { getServer().getPluginManager().addToClasspath(this, jekaFile.toPath()); - final Properties props = System.getProperties(); - final Object oldJekaCacheDir = props.get("jeka.cache.dir"); - - props.put("jeka.cache.dir", new File(libsPath, "cache").toString()); - - final JkDependencySet deps = JkDependencySet.of() - .and("org.jetbrains.kotlin:kotlin-stdlib:1.8.20") - .and("io.ktor:ktor-server-core:2.2.4") - .and("io.ktor:ktor-server-core-jvm:2.2.4") - .and("io.ktor:ktor-server-netty:2.2.4") - .and("io.ktor:ktor-server-netty-jvm:2.2.4") - .and("dev.dejvokep:boosted-yaml:1.3") - .and("com.xk72:pherialize:1.2.4"); - final JkDependencyResolver resolver = JkDependencyResolver.of() - .setRepos(JkRepo.ofMavenCentral().toSet()); - final List paths = resolver.resolve(deps).getFiles().getEntries(); - - if (oldJekaCacheDir != null) { - props.put("jeka.cache.dir", oldJekaCacheDir); - } else { - props.remove("jeka.cache.dir"); - } - - for (final Path path : paths) { - getServer().getPluginManager().addToClasspath(this, path); - } + withJekaPath(new File(libsPath, "cache"), () -> { + final JkDependencySet deps = JkDependencySet.of() + .and("org.jetbrains.kotlin:kotlin-stdlib:1.8.20") + .and("io.ktor:ktor-server-core:2.2.4") + .and("io.ktor:ktor-server-core-jvm:2.2.4") + .and("io.ktor:ktor-server-netty:2.2.4") + .and("io.ktor:ktor-server-netty-jvm:2.2.4") + .and("dev.dejvokep:boosted-yaml:1.3") + .and("com.xk72:pherialize:1.2.4"); + final JkDependencyResolver resolver = JkDependencyResolver.of() + .setRepos(JkRepo.ofMavenCentral().toSet()); + final List paths = + resolver.resolve(deps).getFiles().getEntries(); + + for (final Path path : paths) { + getServer().getPluginManager().addToClasspath(this, path); + } + }); } } From c0e347c850f2e2920df83a86b2d1c281decc5408 Mon Sep 17 00:00:00 2001 From: wtlgo Date: Wed, 5 Apr 2023 11:07:02 +0300 Subject: [PATCH 16/19] Change plugin ID --- .../velocity/VoteReceiverVelocityPluginWrapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java index a7a5ebe..e7fb2f5 100644 --- a/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java +++ b/src/main/java/dev/mikchan/mcnp/votereceiver/velocity/VoteReceiverVelocityPluginWrapper.java @@ -22,7 +22,7 @@ import java.util.List; import java.util.Properties; -@Plugin(id = "mcn_vote-receiver", +@Plugin(id = "mikchan-no-vote-receiver", name = "MikChanNoVoteReceiver", version = "0.1.0-SNAPSHOT", url = "https://github.com/MikChanNoPlugins/VoteReceiver", From 23bf179b031a76df33457ce5358853346ccdcb9a Mon Sep 17 00:00:00 2001 From: wtlgo Date: Wed, 5 Apr 2023 11:08:54 +0300 Subject: [PATCH 17/19] Update website --- src/main/resources/bungee.yml | 2 +- src/main/resources/plugin.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/bungee.yml b/src/main/resources/bungee.yml index 9762421..260d0ed 100644 --- a/src/main/resources/bungee.yml +++ b/src/main/resources/bungee.yml @@ -3,7 +3,7 @@ version: '${version}' authors: [ "George Endo (wtlgo / MikChan)" ] description: Converts various monitoring vote systems to Votifier -website: https://github.com/MikChanNoPlugins +website: https://github.com/MikChanNoPlugins/VoteReceiver prefix: MCnVoteReceiver api-version: 1.19 diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 49b937a..d5487d1 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,7 +3,7 @@ version: '${version}' authors: [ "George Endo (wtlgo / MikChan)" ] description: Converts various monitoring vote systems to Votifier -website: https://github.com/MikChanNoPlugins +website: https://github.com/MikChanNoPlugins/VoteReceiver prefix: MCnVoteReceiver api-version: 1.19 From eed170ecc08c022cba8abf7c41b5f2ac0c243987 Mon Sep 17 00:00:00 2001 From: wtlgo Date: Wed, 5 Apr 2023 11:17:09 +0300 Subject: [PATCH 18/19] Fix plugin version --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 0eb887a..b8b122a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { id "java" - id "org.jetbrains.kotlin.jvm" version "1.8.10" + id "org.jetbrains.kotlin.jvm" version "1.8.20" id "org.jetbrains.dokka" version "1.7.20" id "maven-publish" id "com.github.johnrengelman.shadow" version "7.1.2" From 0416f646402e2669dbb9bbb2be97d82ec9d4b56c Mon Sep 17 00:00:00 2001 From: wtlgo Date: Wed, 5 Apr 2023 11:18:26 +0300 Subject: [PATCH 19/19] Bump version --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index b8b122a..3b4bd6a 100644 --- a/build.gradle +++ b/build.gradle @@ -24,7 +24,7 @@ static def determineVersion(String defaultVersion) { } group = "dev.mikchan.mcnp" -version = determineVersion("1.2.2") +version = determineVersion("1.3.0") def localProperties = new Properties() def propertiesFile = rootProject.file("local.properties")