From 7a793a45eb316a892be50235e75fa746c93a372f Mon Sep 17 00:00:00 2001 From: InvalidJoker <0limitdev@gmail.com> Date: Sun, 22 Dec 2024 21:31:43 +0100 Subject: [PATCH 1/4] feat: waterdog base --- .gitignore | 1 + build.gradle.kts | 4 +++ connection-waterdog/build.gradle.kts | 4 +++ .../src/main/kotlin/JoinHandler.kt | 20 ++++++++++++++ .../src/main/kotlin/ReconnectHandler.kt | 15 +++++++++++ .../kotlin/WaterdogServerConnectionPlugin.kt | 26 +++++++++++++++++++ gradle/libs.versions.toml | 2 ++ settings.gradle.kts | 2 +- 8 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 connection-waterdog/build.gradle.kts create mode 100644 connection-waterdog/src/main/kotlin/JoinHandler.kt create mode 100644 connection-waterdog/src/main/kotlin/ReconnectHandler.kt create mode 100644 connection-waterdog/src/main/kotlin/WaterdogServerConnectionPlugin.kt diff --git a/.gitignore b/.gitignore index b63da45..bcc07bc 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,7 @@ bin/ ### VS Code ### .vscode/ +.idea/ ### Mac OS ### .DS_Store \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 11277d3..b10ad8f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -23,6 +23,10 @@ allprojects { maven("https://libraries.minecraft.net") maven("https://repo.papermc.io/repository/maven-public") maven("https://repo.simplecloud.app/snapshots") + maven("https://repo.waterdog.dev/releases/") + maven("https://repo.waterdog.dev/snapshots/") + maven("https://repo.opencollab.dev/maven-releases/") + maven("https://repo.opencollab.dev/maven-snapshots/") } } diff --git a/connection-waterdog/build.gradle.kts b/connection-waterdog/build.gradle.kts new file mode 100644 index 0000000..aee1f2b --- /dev/null +++ b/connection-waterdog/build.gradle.kts @@ -0,0 +1,4 @@ +dependencies { + api(project(":connection-shared")) + compileOnly(libs.waterdog) +} \ No newline at end of file diff --git a/connection-waterdog/src/main/kotlin/JoinHandler.kt b/connection-waterdog/src/main/kotlin/JoinHandler.kt new file mode 100644 index 0000000..b4ddc4e --- /dev/null +++ b/connection-waterdog/src/main/kotlin/JoinHandler.kt @@ -0,0 +1,20 @@ + +import app.simplecloud.plugin.connection.shared.ServerConnectionPlugin +import dev.waterdog.waterdogpe.ProxyServer +import dev.waterdog.waterdogpe.network.connection.handler.IJoinHandler +import dev.waterdog.waterdogpe.network.serverinfo.ServerInfo +import dev.waterdog.waterdogpe.player.ProxiedPlayer + +class JoinHandler( + private val server: ProxyServer, + private val serverConnection: ServerConnectionPlugin +) : IJoinHandler { + override fun determineServer(player: ProxiedPlayer): ServerInfo { + val serverConnectionInfoName = serverConnection.getServerNameForLogin(player) + if (serverConnectionInfoName == null) { + player.disconnect(serverConnection.config.fallbackConnectionsConfig.noTargetConnectionFoundMessage) + } + + return server.getServerInfo(serverConnectionInfoName) + } +} \ No newline at end of file diff --git a/connection-waterdog/src/main/kotlin/ReconnectHandler.kt b/connection-waterdog/src/main/kotlin/ReconnectHandler.kt new file mode 100644 index 0000000..9ee7e7d --- /dev/null +++ b/connection-waterdog/src/main/kotlin/ReconnectHandler.kt @@ -0,0 +1,15 @@ + +import app.simplecloud.plugin.connection.shared.ServerConnectionPlugin +import dev.waterdog.waterdogpe.ProxyServer +import dev.waterdog.waterdogpe.network.connection.handler.IReconnectHandler +import dev.waterdog.waterdogpe.network.serverinfo.ServerInfo +import dev.waterdog.waterdogpe.player.ProxiedPlayer + +class ReconnectHandler( + private val server: ProxyServer, + private val serverConnection: ServerConnectionPlugin +) : IReconnectHandler { + override fun getFallbackServer(proxiedPlayer: ProxiedPlayer, serverInfo: ServerInfo, s: String): ServerInfo? { + return server.getServerInfo(serverConnection.getServerNameForLogin(proxiedPlayer)) + } +} \ No newline at end of file diff --git a/connection-waterdog/src/main/kotlin/WaterdogServerConnectionPlugin.kt b/connection-waterdog/src/main/kotlin/WaterdogServerConnectionPlugin.kt new file mode 100644 index 0000000..069e1e7 --- /dev/null +++ b/connection-waterdog/src/main/kotlin/WaterdogServerConnectionPlugin.kt @@ -0,0 +1,26 @@ +import app.simplecloud.plugin.connection.shared.ServerConnectionPlugin +import app.simplecloud.plugin.connection.shared.server.ServerConnectionInfo +import dev.waterdog.waterdogpe.player.ProxiedPlayer +import dev.waterdog.waterdogpe.plugin.Plugin + +class WaterdogServerConnectionPlugin: Plugin() { + + + private val serverConnection = ServerConnectionPlugin( + dataFolder.toPath(), + { + proxy.servers.map { + ServerConnectionInfo( + it.serverName, + it.players.size + ) + } + }, + { player, permission -> player.hasPermission(permission) } + ) + + override fun onEnable() { + proxy.reconnectHandler = ReconnectHandler(proxy, serverConnection) + proxy.joinHandler = JoinHandler(proxy, serverConnection) + } +} \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 89257c4..c2e7a3f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,10 +2,12 @@ kotlin = "2.0.20" shadow = "8.3.3" sonatype-central-portal-publisher = "1.2.3" +waterdog = "2.0.3-SNAPSHOT" [libraries] kotlin-jvm = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } +waterdog = { module = "dev.waterdog.waterdogpe:waterdog", version.ref = "waterdog"} [plugins] kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } diff --git a/settings.gradle.kts b/settings.gradle.kts index 26bd757..16e8857 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -13,4 +13,4 @@ plugins { rootProject.name = "server-connection-plugin" -include("connection-shared", "connection-velocity", "connection-bungeecord") +include("connection-shared", "connection-velocity", "connection-bungeecord", "connection-waterdog") From c7321f2b50954eb15457e339f93508c3ba7c7779 Mon Sep 17 00:00:00 2001 From: InvalidJoker <0limitdev@gmail.com> Date: Sat, 28 Dec 2024 20:08:23 +0100 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20add=20plugin.ym=C3=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simplecloud/plugin/connection/waterdog}/JoinHandler.kt | 1 + .../plugin/connection/waterdog}/ReconnectHandler.kt | 1 + .../connection/waterdog}/WaterdogServerConnectionPlugin.kt | 2 ++ connection-waterdog/src/main/resources/plugin.yml | 5 +++++ 4 files changed, 9 insertions(+) rename connection-waterdog/src/main/kotlin/{ => app/simplecloud/plugin/connection/waterdog}/JoinHandler.kt (94%) rename connection-waterdog/src/main/kotlin/{ => app/simplecloud/plugin/connection/waterdog}/ReconnectHandler.kt (92%) rename connection-waterdog/src/main/kotlin/{ => app/simplecloud/plugin/connection/waterdog}/WaterdogServerConnectionPlugin.kt (94%) create mode 100644 connection-waterdog/src/main/resources/plugin.yml diff --git a/connection-waterdog/src/main/kotlin/JoinHandler.kt b/connection-waterdog/src/main/kotlin/app/simplecloud/plugin/connection/waterdog/JoinHandler.kt similarity index 94% rename from connection-waterdog/src/main/kotlin/JoinHandler.kt rename to connection-waterdog/src/main/kotlin/app/simplecloud/plugin/connection/waterdog/JoinHandler.kt index b4ddc4e..6942cb6 100644 --- a/connection-waterdog/src/main/kotlin/JoinHandler.kt +++ b/connection-waterdog/src/main/kotlin/app/simplecloud/plugin/connection/waterdog/JoinHandler.kt @@ -1,3 +1,4 @@ +package app.simplecloud.plugin.connection.waterdog import app.simplecloud.plugin.connection.shared.ServerConnectionPlugin import dev.waterdog.waterdogpe.ProxyServer diff --git a/connection-waterdog/src/main/kotlin/ReconnectHandler.kt b/connection-waterdog/src/main/kotlin/app/simplecloud/plugin/connection/waterdog/ReconnectHandler.kt similarity index 92% rename from connection-waterdog/src/main/kotlin/ReconnectHandler.kt rename to connection-waterdog/src/main/kotlin/app/simplecloud/plugin/connection/waterdog/ReconnectHandler.kt index 9ee7e7d..366af19 100644 --- a/connection-waterdog/src/main/kotlin/ReconnectHandler.kt +++ b/connection-waterdog/src/main/kotlin/app/simplecloud/plugin/connection/waterdog/ReconnectHandler.kt @@ -1,3 +1,4 @@ +package app.simplecloud.plugin.connection.waterdog import app.simplecloud.plugin.connection.shared.ServerConnectionPlugin import dev.waterdog.waterdogpe.ProxyServer diff --git a/connection-waterdog/src/main/kotlin/WaterdogServerConnectionPlugin.kt b/connection-waterdog/src/main/kotlin/app/simplecloud/plugin/connection/waterdog/WaterdogServerConnectionPlugin.kt similarity index 94% rename from connection-waterdog/src/main/kotlin/WaterdogServerConnectionPlugin.kt rename to connection-waterdog/src/main/kotlin/app/simplecloud/plugin/connection/waterdog/WaterdogServerConnectionPlugin.kt index 069e1e7..903ac08 100644 --- a/connection-waterdog/src/main/kotlin/WaterdogServerConnectionPlugin.kt +++ b/connection-waterdog/src/main/kotlin/app/simplecloud/plugin/connection/waterdog/WaterdogServerConnectionPlugin.kt @@ -1,3 +1,5 @@ +package app.simplecloud.plugin.connection.waterdog + import app.simplecloud.plugin.connection.shared.ServerConnectionPlugin import app.simplecloud.plugin.connection.shared.server.ServerConnectionInfo import dev.waterdog.waterdogpe.player.ProxiedPlayer diff --git a/connection-waterdog/src/main/resources/plugin.yml b/connection-waterdog/src/main/resources/plugin.yml new file mode 100644 index 0000000..c0dc7d9 --- /dev/null +++ b/connection-waterdog/src/main/resources/plugin.yml @@ -0,0 +1,5 @@ +name: connection-waterdog +version: 1.0-SNAPSHOT +author: InvalidJoker + +main: app.simplecloud.plugin.connection.waterdog.WaterdogServerConnectionPlugin \ No newline at end of file From 362bf6537c9ed3d5157400b6253763eec3043288 Mon Sep 17 00:00:00 2001 From: InvalidJoker <0limitdev@gmail.com> Date: Sun, 29 Dec 2024 20:36:37 +0100 Subject: [PATCH 3/4] fix: invalid data folder --- .../WaterdogServerConnectionPlugin.kt | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/connection-waterdog/src/main/kotlin/app/simplecloud/plugin/connection/waterdog/WaterdogServerConnectionPlugin.kt b/connection-waterdog/src/main/kotlin/app/simplecloud/plugin/connection/waterdog/WaterdogServerConnectionPlugin.kt index 903ac08..e805ceb 100644 --- a/connection-waterdog/src/main/kotlin/app/simplecloud/plugin/connection/waterdog/WaterdogServerConnectionPlugin.kt +++ b/connection-waterdog/src/main/kotlin/app/simplecloud/plugin/connection/waterdog/WaterdogServerConnectionPlugin.kt @@ -5,23 +5,24 @@ import app.simplecloud.plugin.connection.shared.server.ServerConnectionInfo import dev.waterdog.waterdogpe.player.ProxiedPlayer import dev.waterdog.waterdogpe.plugin.Plugin -class WaterdogServerConnectionPlugin: Plugin() { +class WaterdogServerConnectionPlugin : Plugin() { + private lateinit var serverConnection: ServerConnectionPlugin + override fun onEnable() { - private val serverConnection = ServerConnectionPlugin( - dataFolder.toPath(), - { - proxy.servers.map { - ServerConnectionInfo( - it.serverName, - it.players.size - ) - } - }, - { player, permission -> player.hasPermission(permission) } - ) + serverConnection = ServerConnectionPlugin( + dataFolder.toPath(), + { + proxy.servers.map { + ServerConnectionInfo( + it.serverName, + it.players.size + ) + } + }, + { player, permission -> player.hasPermission(permission) } + ) - override fun onEnable() { proxy.reconnectHandler = ReconnectHandler(proxy, serverConnection) proxy.joinHandler = JoinHandler(proxy, serverConnection) } From a7221cfda550e17f99c744374def8062e5c72a82 Mon Sep 17 00:00:00 2001 From: InvalidJoker <0limitdev@gmail.com> Date: Sun, 29 Dec 2024 20:49:15 +0100 Subject: [PATCH 4/4] fix: shadow in shared --- build.gradle.kts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index b10ad8f..f86177b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -121,6 +121,10 @@ subprojects { mergeServiceFiles() archiveFileName.set("${project.name}.jar") + dependencies { + include(project(":connection-shared")) + } + val externalRelocatePath = "app.simplecloud.external" relocate("kotlinx", "${externalRelocatePath}.kotlinx") relocate("io", "${externalRelocatePath}.io")