diff --git a/gradle.properties b/gradle.properties index 95f0faaa..adfa4217 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled javaVersion=25 mcVersion=1.21.11 group=dev.slne.surf -version=1.21.11-2.60.2 +version=1.21.11-2.61.0 relocationPrefix=dev.slne.surf.surfapi.libs snapshot=false diff --git a/settings.gradle.kts b/settings.gradle.kts index 5845629f..a3505a3e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -4,22 +4,21 @@ pluginManagement { gradlePluginPortal() } } + plugins { id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" } -val ci = System.getenv("CI")?.toBoolean() == true +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") rootProject.name = "surf-api" + include(":surf-api-core:surf-api-core-api") include(":surf-api-core:surf-api-core-server") include(":surf-api-bukkit:surf-api-bukkit-api") include(":surf-api-bukkit:surf-api-bukkit-server") -//include(":surf-api-hytale:surf-api-hytale-api") -//include(":surf-api-hytale:surf-api-hytale-server") - include(":surf-api-velocity:surf-api-velocity-api") include(":surf-api-velocity:surf-api-velocity-server") @@ -27,11 +26,13 @@ include("surf-api-standalone") include("surf-api-gradle-plugin") include("surf-api-gradle-plugin:surf-api-processor") +include("surf-api-shared") +include("surf-api-shared:surf-api-shared-public") +include("surf-api-shared:surf-api-shared-internal") + +val ci = System.getenv("CI")?.toBoolean() ?: false + if (!ci) { include(":surf-api-bukkit:surf-api-bukkit-plugin-test") -// include("surf-api-generator") include("surf-api-modern-generator") -} -include("surf-api-shared") -include("surf-api-shared:surf-api-shared-public") -include("surf-api-shared:surf-api-shared-internal") \ No newline at end of file +} \ No newline at end of file diff --git a/surf-api-bukkit/surf-api-bukkit-api/build.gradle.kts b/surf-api-bukkit/surf-api-bukkit-api/build.gradle.kts index ab4ec967..86cfda73 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/build.gradle.kts +++ b/surf-api-bukkit/surf-api-bukkit-api/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } dependencies { - api(project(":surf-api-core:surf-api-core-api")) + api(projects.surfApiCore.surfApiCoreApi) compileOnly(libs.paper.api) compileOnlyApi(libs.packetevents.spigot) api(libs.scoreboard.library.api) diff --git a/surf-api-bukkit/surf-api-bukkit-plugin-test/build.gradle.kts b/surf-api-bukkit/surf-api-bukkit-plugin-test/build.gradle.kts index 2fadb49a..dc7d0099 100644 --- a/surf-api-bukkit/surf-api-bukkit-plugin-test/build.gradle.kts +++ b/surf-api-bukkit/surf-api-bukkit-plugin-test/build.gradle.kts @@ -12,7 +12,7 @@ plugins { description = "surf-api-bukkit-plugin-test" dependencies { - compileOnlyApi(project(":surf-api-bukkit:surf-api-bukkit-api")) + compileOnlyApi(projects.surfApiBukkit.surfApiBukkitApi) compileOnlyApi(libs.commandapi.paper) paperweight.paperDevBundle(libs.paper.api.get().version) diff --git a/surf-api-bukkit/surf-api-bukkit-server/build.gradle.kts b/surf-api-bukkit/surf-api-bukkit-server/build.gradle.kts index 4fbe0fea..0ea93e6d 100644 --- a/surf-api-bukkit/surf-api-bukkit-server/build.gradle.kts +++ b/surf-api-bukkit/surf-api-bukkit-server/build.gradle.kts @@ -16,8 +16,8 @@ kotlin { } dependencies { - api(project(":surf-api-bukkit:surf-api-bukkit-api")) - api(project(":surf-api-core:surf-api-core-server")) + api(projects.surfApiBukkit.surfApiBukkitApi) + api(projects.surfApiCore.surfApiCoreServer) paperweight.paperDevBundle(libs.paper.api.get().version) diff --git a/surf-api-core/surf-api-core-api/build.gradle.kts b/surf-api-core/surf-api-core-api/build.gradle.kts index 544a10a2..38dee592 100644 --- a/surf-api-core/surf-api-core-api/build.gradle.kts +++ b/surf-api-core/surf-api-core-api/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } dependencies { - api(project(":surf-api-shared:surf-api-shared-public")) + api(projects.surfApiShared.surfApiSharedPublic) api(libs.adventure.nbt) compileOnlyApi(libs.packetevents.api) compileOnlyApi(libs.dazzleconf) diff --git a/surf-api-core/surf-api-core-server/build.gradle.kts b/surf-api-core/surf-api-core-server/build.gradle.kts index 96464876..1293ff38 100644 --- a/surf-api-core/surf-api-core-server/build.gradle.kts +++ b/surf-api-core/surf-api-core-server/build.gradle.kts @@ -3,8 +3,8 @@ plugins { } dependencies { - api(project(":surf-api-core:surf-api-core-api")) - api(project(":surf-api-shared:surf-api-shared-internal")) + api(projects.surfApiShared.surfApiSharedInternal) + api(projects.surfApiCore.surfApiCoreApi) compileOnly(libs.packetevents.netty.common) api(libs.bytebuddy) } diff --git a/surf-api-gradle-plugin/build.gradle.kts b/surf-api-gradle-plugin/build.gradle.kts index 426ae378..adba8110 100644 --- a/surf-api-gradle-plugin/build.gradle.kts +++ b/surf-api-gradle-plugin/build.gradle.kts @@ -51,6 +51,11 @@ dependencies { gradlePlugin { plugins { + create("settings") { + id = "dev.slne.surf.surfapi.gradle.settings" + implementationClass = "dev.slne.surf.surfapi.gradle.settings.SurfSettingsPlugin" + } + create("core") { id = "dev.slne.surf.surfapi.gradle.core" implementationClass = "dev.slne.surf.surfapi.gradle.platform.core.CoreSurfPlugin" @@ -78,12 +83,6 @@ gradlePlugin { implementationClass = "dev.slne.surf.surfapi.gradle.platform.velocity.VelocitySurfPlugin" } - - create("hytale") { - id = "dev.slne.surf.surfapi.gradle.hytale" - implementationClass = - "dev.slne.surf.surfapi.gradle.platform.hytale.HytaleSurfPlugin" - } } publishing { @@ -136,7 +135,6 @@ val generateConstants by tasks.registering { | const val SNAPSHOT_REPO = "https://repo.slne.dev/repository/maven-releases" | const val PAPER_API = "${libs.paper.api.get()}" | const val VELOCITY_API = "${libs.velocity.api.get()}" - | const val HYTALE_SERVER = "${libs.hytale.server.get()}" | const val AUTO_SERVICE_ANNOTATIONS = "${libs.auto.service.annotations.get()}" | const val AUTO_SERVICE = "${generator.group}:${generator.name}:${generator.version}" | diff --git a/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/generators/pluginfiles/HytalePluginFile.kt b/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/generators/pluginfiles/HytalePluginFile.kt deleted file mode 100644 index efea9e89..00000000 --- a/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/generators/pluginfiles/HytalePluginFile.kt +++ /dev/null @@ -1,65 +0,0 @@ -package dev.slne.surf.surfapi.gradle.generators.pluginfiles - -import dev.slne.surf.surfapi.gradle.platform.invalidPluginFile -import org.gradle.api.provider.ListProperty -import org.gradle.api.provider.MapProperty -import org.gradle.api.provider.Property -import org.gradle.api.tasks.Input -import javax.inject.Inject - -abstract class HytalePluginFile @Inject constructor() : CommonPluginFile() { - @get:Input - abstract val group: Property - - @get:Input - abstract val id: Property - - @get:Input - abstract val name: Property - - @get:Input - abstract val version: Property - - @get:Input - abstract val description: Property - - @get:Input - abstract val authors: ListProperty - - @get:Input - abstract val website: Property - - @get:Input - abstract val serverVersion: Property - - @get:Input - abstract val disabledByDefault: Property - - @get:Input - abstract val main: Property - - @get:Input - abstract val includesAssetPack: Property - - @get:Input - abstract val dependencies: MapProperty - - @get:Input - abstract val optionalDependencies: MapProperty - - override fun isApplied(): Boolean { - return main.isPresent - } - - override fun validate() { - if (name.orNull.isNullOrBlank()) invalidPluginFile("Plugin name not set") - - if (version.orNull.isNullOrBlank()) invalidPluginFile("Plugin version not set") - if (main.orNull.isNullOrBlank()) invalidPluginFile("Main class not set") - - optionalDependencies.orNull?.forEach { (dependency, version) -> - if (dependency.isBlank()) invalidPluginFile("Dependency id not set") - if (version.isBlank()) invalidPluginFile("Dependency '$dependency' version not set") - } - } -} \ No newline at end of file diff --git a/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/generators/pluginfiles/dto/HytalePluginFileDto.kt b/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/generators/pluginfiles/dto/HytalePluginFileDto.kt deleted file mode 100644 index 18dd6cbe..00000000 --- a/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/generators/pluginfiles/dto/HytalePluginFileDto.kt +++ /dev/null @@ -1,69 +0,0 @@ -package dev.slne.surf.surfapi.gradle.generators.pluginfiles.dto - -import dev.slne.surf.surfapi.gradle.generators.pluginfiles.HytalePluginFile -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class HytalePluginFileDto( - @SerialName("Group") - val group: String, - - @SerialName("Id") - val id: String? = null, - - @SerialName("Name") - val name: String, - - @SerialName("Version") - val version: String, - - @SerialName("Description") - val description: String, - - @SerialName("Authors") - val authors: List, - - @SerialName("Website") - val website: String, - - @SerialName("ServerVersion") - val serverVersion: String, - - @SerialName("DisabledByDefault") - val disabledByDefault: Boolean, - - @SerialName("Main") - val main: String, - - @SerialName("IncludesAssetPack") - val includesAssetPack: Boolean, - - @SerialName("Dependencies") - val dependencies: Map, - - @SerialName("OptionalDependencies") - val optionalDependencies: Map, -) { - @Serializable - data class AuthorDto( - val name: String, - ) - - companion object { - fun fromFile(file: HytalePluginFile) = HytalePluginFileDto( - group = file.group.get(), - name = file.name.get(), - version = file.version.get(), - description = file.description.get(), - authors = file.authors.getOrElse(emptyList()).map { AuthorDto(it) }, - website = file.website.get(), - serverVersion = file.serverVersion.get(), - disabledByDefault = file.disabledByDefault.get(), - main = file.main.get(), - includesAssetPack = file.includesAssetPack.get(), - dependencies = file.dependencies.get(), - optionalDependencies = file.optionalDependencies.get() - ) - } -} \ No newline at end of file diff --git a/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/platform/hytale/HytaleSurfExtension.kt b/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/platform/hytale/HytaleSurfExtension.kt deleted file mode 100644 index d5e4f461..00000000 --- a/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/platform/hytale/HytaleSurfExtension.kt +++ /dev/null @@ -1,11 +0,0 @@ -package dev.slne.surf.surfapi.gradle.platform.hytale - -import dev.slne.surf.surfapi.gradle.platform.core.CoreSurfExtension -import org.gradle.api.Project -import org.gradle.api.model.ObjectFactory -import javax.inject.Inject - -open class HytaleSurfExtension @Inject constructor( - private val project: Project, - objects: ObjectFactory, -) : CoreSurfExtension(objects) \ No newline at end of file diff --git a/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/platform/hytale/HytaleSurfPlugin.kt b/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/platform/hytale/HytaleSurfPlugin.kt deleted file mode 100644 index 09847ea2..00000000 --- a/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/platform/hytale/HytaleSurfPlugin.kt +++ /dev/null @@ -1,53 +0,0 @@ -package dev.slne.surf.surfapi.gradle.platform.hytale - -import dev.slne.surf.surfapi.gradle.generated.Constants -import dev.slne.surf.surfapi.gradle.generators.pluginfiles.HytalePluginFile -import dev.slne.surf.surfapi.gradle.generators.pluginfiles.dto.HytalePluginFileDto -import dev.slne.surf.surfapi.gradle.platform.SurfApiPlatform -import dev.slne.surf.surfapi.gradle.platform.common.CommonSurfPluginWithPluginFile -import org.gradle.api.Project -import org.gradle.kotlin.dsl.create -import org.gradle.kotlin.dsl.dependencies -import org.jetbrains.kotlin.gradle.utils.COMPILE_ONLY - -internal class HytaleSurfPlugin : - CommonSurfPluginWithPluginFile( - "hytale", - SurfApiPlatform.HYTALE, - "manifest.json" - ) { - - override val extensionClass = HytaleSurfExtension::class.java - override val dtoSerializer = HytalePluginFileDto.serializer() - - init { - "it.unimi.dsi.fastutil" relocatesTo "fastutil" - } - - override fun Project.configure0() { - dependencies { - add(COMPILE_ONLY, Constants.HYTALE_SERVER) - } - } - - override fun createPluginFile( - project: Project - ) = project.extensions.create("hytalePluginFile").apply { - group.convention("HYS") - id.convention(project.name.lowercase()) - name.convention(project.provider { project.name }) - version.convention(project.provider { project.version.toString() }) - description.convention(project.provider { project.description ?: "" }) - authors.convention(mutableListOf("SLNE Development")) - website.convention(project.providers.gradleProperty("url").orElse("")) - serverVersion.convention("*") - disabledByDefault.convention(false) - includesAssetPack.convention(false) - dependencies.convention(mutableMapOf("HYS:surf-api-hytale-server" to "*")) - optionalDependencies.convention(mutableMapOf()) - } - - override fun createPluginFileDto(pluginFile: HytalePluginFile): HytalePluginFileDto { - return HytalePluginFileDto.fromFile(pluginFile) - } -} \ No newline at end of file diff --git a/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/settings/SurfSettingsPlugin.kt b/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/settings/SurfSettingsPlugin.kt new file mode 100644 index 00000000..fec06fbe --- /dev/null +++ b/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/settings/SurfSettingsPlugin.kt @@ -0,0 +1,10 @@ +package dev.slne.surf.surfapi.gradle.settings + +import org.gradle.api.Plugin +import org.gradle.api.initialization.Settings + +internal class SurfSettingsPlugin : Plugin { + override fun apply(target: Settings) { + target.enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") + } +} \ No newline at end of file diff --git a/surf-api-hytale/surf-api-hytale-api/api/surf-api-hytale-api.api b/surf-api-hytale/surf-api-hytale-api/api/surf-api-hytale-api.api deleted file mode 100644 index 2ea5dfb6..00000000 --- a/surf-api-hytale/surf-api-hytale-api/api/surf-api-hytale-api.api +++ /dev/null @@ -1,56 +0,0 @@ -public abstract interface class dev/slne/surf/surfapi/hytale/api/SurfHytaleApi : dev/slne/surf/surfapi/core/api/SurfCoreApi { - public static final field Companion Ldev/slne/surf/surfapi/hytale/api/SurfHytaleApi$Companion; -} - -public final class dev/slne/surf/surfapi/hytale/api/SurfHytaleApi$Companion { - public final fun getInstance ()Ldev/slne/surf/surfapi/hytale/api/SurfHytaleApi; -} - -public final class dev/slne/surf/surfapi/hytale/api/SurfHytaleApiKt { - public static final fun getSurfHytaleApi ()Ldev/slne/surf/surfapi/hytale/api/SurfHytaleApi; -} - -public abstract interface class dev/slne/surf/surfapi/hytale/api/coroutines/CoroutineSession { - public abstract fun getMainDispatcher ()Lkotlin/coroutines/CoroutineContext; - public abstract fun getPluginDispatcher ()Lkotlin/coroutines/CoroutineContext; - public abstract fun getScope ()Lkotlinx/coroutines/CoroutineScope; -} - -public abstract interface class dev/slne/surf/surfapi/hytale/api/coroutines/HysCoroutine { - public static final field Companion Ldev/slne/surf/surfapi/hytale/api/coroutines/HysCoroutine$Companion; - public abstract fun disable (Lcom/hypixel/hytale/server/core/plugin/JavaPlugin;)V - public abstract fun getCoroutineSession (Lcom/hypixel/hytale/server/core/plugin/JavaPlugin;)Ldev/slne/surf/surfapi/hytale/api/coroutines/CoroutineSession; -} - -public final class dev/slne/surf/surfapi/hytale/api/coroutines/HysCoroutine$Companion { - public final fun getDriver ()Ljava/lang/String; - public final fun setDriver (Ljava/lang/String;)V -} - -public final class dev/slne/surf/surfapi/hytale/api/coroutines/HysCoroutineExceptionEvent : com/hypixel/hytale/event/ICancellable, com/hypixel/hytale/event/IEvent { - public fun (Lcom/hypixel/hytale/server/core/plugin/JavaPlugin;Ljava/lang/Throwable;)V - public final fun getException ()Ljava/lang/Throwable; - public final fun getPlugin ()Lcom/hypixel/hytale/server/core/plugin/JavaPlugin; - public fun isCancelled ()Z - public fun setCancelled (Z)V -} - -public final class dev/slne/surf/surfapi/hytale/api/coroutines/HysCoroutineKt { - public static final fun getMainDispatcher (Lcom/hypixel/hytale/server/core/plugin/JavaPlugin;)Lkotlin/coroutines/CoroutineContext; - public static final fun getPluginDispatcher (Lcom/hypixel/hytale/server/core/plugin/JavaPlugin;)Lkotlin/coroutines/CoroutineContext; - public static final fun getScope (Lcom/hypixel/hytale/server/core/plugin/JavaPlugin;)Lkotlinx/coroutines/CoroutineScope; - public static final fun getTicks (I)J - public static final fun launch (Lcom/hypixel/hytale/server/core/plugin/JavaPlugin;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/Job; - public static synthetic fun launch$default (Lcom/hypixel/hytale/server/core/plugin/JavaPlugin;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Job; -} - -public class dev/slne/surf/surfapi/hytale/api/coroutines/SuspendingJavaPlugin : com/hypixel/hytale/server/core/plugin/JavaPlugin { - public fun (Lcom/hypixel/hytale/server/core/plugin/JavaPluginInit;)V - protected fun setup ()V - public fun setupAsync (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - protected fun shutdown ()V - public fun shutdownAsync (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - protected fun start ()V - public fun startAsync (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - diff --git a/surf-api-hytale/surf-api-hytale-api/build.gradle.kts b/surf-api-hytale/surf-api-hytale-api/build.gradle.kts deleted file mode 100644 index 2a77341e..00000000 --- a/surf-api-hytale/surf-api-hytale-api/build.gradle.kts +++ /dev/null @@ -1,11 +0,0 @@ -plugins { - `core-convention` - `api-validation` -} - -dependencies { - api(project(":surf-api-core:surf-api-core-api")) - compileOnlyApi(libs.hytale.server) -} - -description = "surf-api-hytale-api" diff --git a/surf-api-hytale/surf-api-hytale-api/src/main/kotlin/dev/slne/surf/surfapi/hytale/api/SurfHytaleApi.kt b/surf-api-hytale/surf-api-hytale-api/src/main/kotlin/dev/slne/surf/surfapi/hytale/api/SurfHytaleApi.kt deleted file mode 100644 index f2079371..00000000 --- a/surf-api-hytale/surf-api-hytale-api/src/main/kotlin/dev/slne/surf/surfapi/hytale/api/SurfHytaleApi.kt +++ /dev/null @@ -1,12 +0,0 @@ -package dev.slne.surf.surfapi.hytale.api - -import dev.slne.surf.surfapi.core.api.SurfCoreApi -import dev.slne.surf.surfapi.core.api.util.requiredService - -interface SurfHytaleApi : SurfCoreApi { - companion object { - val instance = requiredService() - } -} - -val surfHytaleApi get() = SurfHytaleApi.instance \ No newline at end of file diff --git a/surf-api-hytale/surf-api-hytale-api/src/main/kotlin/dev/slne/surf/surfapi/hytale/api/coroutines/CoroutineSession.kt b/surf-api-hytale/surf-api-hytale-api/src/main/kotlin/dev/slne/surf/surfapi/hytale/api/coroutines/CoroutineSession.kt deleted file mode 100644 index b2cfc61b..00000000 --- a/surf-api-hytale/surf-api-hytale-api/src/main/kotlin/dev/slne/surf/surfapi/hytale/api/coroutines/CoroutineSession.kt +++ /dev/null @@ -1,12 +0,0 @@ -package dev.slne.surf.surfapi.hytale.api.coroutines - -import dev.slne.surf.surfapi.shared.api.util.InternalSurfApi -import kotlinx.coroutines.CoroutineScope -import kotlin.coroutines.CoroutineContext - -@InternalSurfApi -interface CoroutineSession { - val scope: CoroutineScope - val mainDispatcher: CoroutineContext - val pluginDispatcher: CoroutineContext -} \ No newline at end of file diff --git a/surf-api-hytale/surf-api-hytale-api/src/main/kotlin/dev/slne/surf/surfapi/hytale/api/coroutines/HysCoroutine.kt b/surf-api-hytale/surf-api-hytale-api/src/main/kotlin/dev/slne/surf/surfapi/hytale/api/coroutines/HysCoroutine.kt deleted file mode 100644 index 69248f13..00000000 --- a/surf-api-hytale/surf-api-hytale-api/src/main/kotlin/dev/slne/surf/surfapi/hytale/api/coroutines/HysCoroutine.kt +++ /dev/null @@ -1,59 +0,0 @@ -package dev.slne.surf.surfapi.hytale.api.coroutines - -import com.hypixel.hytale.server.core.plugin.JavaPlugin -import dev.slne.surf.surfapi.shared.api.util.InternalSurfApi -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.CoroutineStart -import kotlinx.coroutines.Job -import kotlinx.coroutines.isActive -import kotlin.coroutines.CoroutineContext - -@InternalSurfApi -interface HysCoroutine { - companion object { - var driver: String = "dev.slne.surf.surfapi.hytale.server.coroutines.impl.HysCoroutineImpl" - } - - fun getCoroutineSession(plugin: JavaPlugin): CoroutineSession - fun disable(plugin: JavaPlugin) -} - -internal val hysCoroutine: HysCoroutine by lazy { - try { - Class.forName(HysCoroutine.driver) - .getDeclaredConstructor().newInstance() as HysCoroutine - } catch (exception: Exception) { - throw RuntimeException( - "Failed to load dev.slne.hys.coroutines.server.api.HysCoroutine implementation. Shade hys-coroutine into your plugin.", - exception - ) - } -} - -val JavaPlugin.mainDispatcher: CoroutineContext - get() = hysCoroutine.getCoroutineSession(this).mainDispatcher - -val JavaPlugin.pluginDispatcher: CoroutineContext - get() = hysCoroutine.getCoroutineSession(this).pluginDispatcher - -val JavaPlugin.scope: CoroutineScope - get() = hysCoroutine.getCoroutineSession(this).scope - -fun JavaPlugin.launch( - context: CoroutineContext = pluginDispatcher, - start: CoroutineStart = CoroutineStart.DEFAULT, - block: suspend CoroutineScope.() -> Unit -): Job { - if (!scope.isActive) { - return Job() - } - - return launch(context, start, block) -} - -/** - * Converts the number to dev.slne.hys.coroutines.server.api.ticks for being used together with delay(..). - * E.g. delay(1.dev.slne.hys.coroutines.server.api.ticks). - * Hytale dev.slne.hys.coroutines.server.api.ticks 30 times per second, which means a tick appears every 33.33 milliseconds - */ -val Int.ticks: Long get() = (this * 1000L) / 30L \ No newline at end of file diff --git a/surf-api-hytale/surf-api-hytale-api/src/main/kotlin/dev/slne/surf/surfapi/hytale/api/coroutines/HysCoroutineExceptionEvent.kt b/surf-api-hytale/surf-api-hytale-api/src/main/kotlin/dev/slne/surf/surfapi/hytale/api/coroutines/HysCoroutineExceptionEvent.kt deleted file mode 100644 index b89b2a5d..00000000 --- a/surf-api-hytale/surf-api-hytale-api/src/main/kotlin/dev/slne/surf/surfapi/hytale/api/coroutines/HysCoroutineExceptionEvent.kt +++ /dev/null @@ -1,18 +0,0 @@ -package dev.slne.surf.surfapi.hytale.api.coroutines - -import com.hypixel.hytale.event.ICancellable -import com.hypixel.hytale.event.IEvent -import com.hypixel.hytale.server.core.plugin.JavaPlugin - -class HysCoroutineExceptionEvent( - val plugin: JavaPlugin, - val exception: Throwable -) : IEvent, ICancellable { - private var cancelled = false - - override fun isCancelled() = cancelled - - override fun setCancelled(cancelled: Boolean) { - this@HysCoroutineExceptionEvent.cancelled = cancelled - } -} \ No newline at end of file diff --git a/surf-api-hytale/surf-api-hytale-api/src/main/kotlin/dev/slne/surf/surfapi/hytale/api/coroutines/SuspendingJavaPlugin.kt b/surf-api-hytale/surf-api-hytale-api/src/main/kotlin/dev/slne/surf/surfapi/hytale/api/coroutines/SuspendingJavaPlugin.kt deleted file mode 100644 index 4f932ad8..00000000 --- a/surf-api-hytale/surf-api-hytale-api/src/main/kotlin/dev/slne/surf/surfapi/hytale/api/coroutines/SuspendingJavaPlugin.kt +++ /dev/null @@ -1,29 +0,0 @@ -package dev.slne.surf.surfapi.hytale.api.coroutines - -import com.hypixel.hytale.server.core.plugin.JavaPlugin -import com.hypixel.hytale.server.core.plugin.JavaPluginInit -import kotlinx.coroutines.runBlocking - -open class SuspendingJavaPlugin(init: JavaPluginInit) : JavaPlugin(init) { - open suspend fun setupAsync() {} - open suspend fun startAsync() {} - open suspend fun shutdownAsync() {} - - override fun setup() { - runBlocking { - setupAsync() - } - } - - override fun start() { - runBlocking { - startAsync() - } - } - - override fun shutdown() { - runBlocking { - shutdownAsync() - } - } -} \ No newline at end of file diff --git a/surf-api-hytale/surf-api-hytale-server/build.gradle.kts b/surf-api-hytale/surf-api-hytale-server/build.gradle.kts deleted file mode 100644 index c7280869..00000000 --- a/surf-api-hytale/surf-api-hytale-server/build.gradle.kts +++ /dev/null @@ -1,56 +0,0 @@ -plugins { - `core-convention` -} - -dependencies { - api(project(":surf-api-hytale:surf-api-hytale-api")) - api(project(":surf-api-core:surf-api-core-server")) { - exclude(libs.commandapi.core) - exclude(libs.brigadier) - } - - api(libs.adventure.api) - api(libs.adventure.text.logger.slf4j) - api(libs.adventure.text.minimessage) - api(libs.adventure.serializer.gson) - api(libs.adventure.serializer.legacy) - api(libs.adventure.serializer.plain) - api(libs.adventure.serializer.ansi) - - api(libs.guava) - api(libs.dazzleconf) - api(libs.spongepowered.math) - api(libs.commons.lang3) - api(libs.commons.text) - api(libs.okhttp) - api(libs.fastutil) - api(libs.configurate.yaml) - api(libs.configurate.jackson) - api(libs.flogger) - api(libs.commons.math4.core) - api(libs.commons.math3) - implementation(libs.packetevents.netty.common) - runtimeOnly(libs.flogger.slf4j.backend) -} - -tasks.withType { - filesMatching("manifest.json") { - expand( - "version" to project.version, - "id" to project.name, - "name" to project.name - ) - } -} - -tasks { - shadowJar { - val relocationPrefix: String by project - relocate("it.unimi.dsi.fastutil", "$relocationPrefix.fastutil") - } -} - -description = "surf-api-hytale-server" - -private fun T.exclude(provider: Provider) = - provider.get().module.apply { exclude(group, name) } \ No newline at end of file diff --git a/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/HytaleInstance.kt b/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/HytaleInstance.kt deleted file mode 100644 index c029fc95..00000000 --- a/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/HytaleInstance.kt +++ /dev/null @@ -1,25 +0,0 @@ -package dev.slne.surf.surfapi.hytale.server - -import com.github.retrooper.packetevents.PacketEvents -import dev.slne.surf.surfapi.core.api.extensions.packetEvents -import dev.slne.surf.surfapi.core.server.CoreInstance -import dev.slne.surf.surfapi.core.server.packet.NoopPacketEvents - -object HytaleInstance : CoreInstance() { - override suspend fun bootstrap() { - super.bootstrap() - - PacketEvents.setAPI(NoopPacketEvents()) - packetEvents.load() - packetEvents.init() - } - - override suspend fun onEnable() { - super.onEnable() - } - - override suspend fun onDisable() { - super.onDisable() - packetEvents.terminate() - } -} \ No newline at end of file diff --git a/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/HytaleMain.kt b/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/HytaleMain.kt deleted file mode 100644 index ce7c3f78..00000000 --- a/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/HytaleMain.kt +++ /dev/null @@ -1,33 +0,0 @@ -package dev.slne.surf.surfapi.hytale.server - -import com.hypixel.hytale.server.core.plugin.JavaPluginInit -import dev.slne.surf.surfapi.hytale.api.coroutines.SuspendingJavaPlugin -import kotlinx.coroutines.runBlocking - -class HytaleMain(init: JavaPluginInit) : SuspendingJavaPlugin(init) { - override fun setup() { - runBlocking { - HytaleInstance.bootstrap() - HytaleInstance.onLoad() - } - } - - override fun start() { - runBlocking { - HytaleInstance.onEnable() - } - } - - override fun shutdown() { - runBlocking { - HytaleInstance.onDisable() - } - } - - companion object { - lateinit var INSTANCE: HytaleMain - private set - } -} - -val hytaleMain get() = HytaleMain.INSTANCE \ No newline at end of file diff --git a/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/coroutines/dispatcher/MainDispatcher.kt b/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/coroutines/dispatcher/MainDispatcher.kt deleted file mode 100644 index cd6a53ef..00000000 --- a/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/coroutines/dispatcher/MainDispatcher.kt +++ /dev/null @@ -1,20 +0,0 @@ -package dev.slne.surf.surfapi.hytale.server.coroutines.dispatcher - -import com.hypixel.hytale.server.core.HytaleServer -import com.hypixel.hytale.server.core.plugin.JavaPlugin -import kotlinx.coroutines.CoroutineDispatcher -import kotlinx.coroutines.Runnable -import java.util.concurrent.TimeUnit -import kotlin.coroutines.CoroutineContext - -internal open class MainDispatcher( - private val plugin: JavaPlugin, -) : CoroutineDispatcher() { - override fun isDispatchNeeded(context: CoroutineContext): Boolean { - return true - } - - override fun dispatch(context: CoroutineContext, block: Runnable) { - HytaleServer.SCHEDULED_EXECUTOR.schedule(block, 0L, TimeUnit.MILLISECONDS) - } -} \ No newline at end of file diff --git a/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/coroutines/dispatcher/PluginDispatcher.kt b/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/coroutines/dispatcher/PluginDispatcher.kt deleted file mode 100644 index eb82f6d2..00000000 --- a/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/coroutines/dispatcher/PluginDispatcher.kt +++ /dev/null @@ -1,63 +0,0 @@ -package dev.slne.surf.surfapi.hytale.server.coroutines.dispatcher - -import com.hypixel.hytale.server.core.plugin.JavaPlugin -import kotlinx.coroutines.CoroutineDispatcher -import java.util.concurrent.ConcurrentLinkedQueue -import java.util.concurrent.Executors -import java.util.concurrent.TimeUnit -import kotlin.coroutines.CoroutineContext - -class PluginDispatcher( - private val plugin: JavaPlugin, - tickRateMs: Long, -) : CoroutineDispatcher(), AutoCloseable { - private val executor = Executors.newScheduledThreadPool(1) { r -> - Thread(r, "MCCoroutine-${plugin.name}-MainThread") - } - private var actionQueue = ConcurrentLinkedQueue() - var threadId = -1L - - init { - executor.submit { - threadId = Thread.currentThread().threadId() - } - executor.scheduleAtFixedRate({ - val actions = ArrayList() - while (true) { - val action = actionQueue.poll() ?: break - actions.add(action) - } - for (action in actions) { - action.run() - } - }, 1L, tickRateMs, TimeUnit.MILLISECONDS) - } - - /** - * Handles dispatching the coroutine on the correct thread. - */ - override fun dispatch(context: CoroutineContext, block: Runnable) { - if (!plugin.isEnabled) { - return - } - - if (Thread.currentThread().id != threadId) { - actionQueue.add(block) - } else { - block.run() - } - } - - /** - * Closes this resource, relinquishing any underlying resources. - * This method is invoked automatically on objects managed by the - * `try`-with-resources statement. - * However, implementers of this interface are strongly encouraged - * to make their `close` methods idempotent. - * - * @throws Exception if this resource cannot be closed - */ - override fun close() { - executor.shutdown() - } -} \ No newline at end of file diff --git a/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/coroutines/impl/CoroutineSessionImpl.kt b/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/coroutines/impl/CoroutineSessionImpl.kt deleted file mode 100644 index e0239908..00000000 --- a/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/coroutines/impl/CoroutineSessionImpl.kt +++ /dev/null @@ -1,56 +0,0 @@ -package dev.slne.surf.surfapi.hytale.server.coroutines.impl - -import com.hypixel.hytale.server.core.HytaleServer -import com.hypixel.hytale.server.core.plugin.JavaPlugin -import dev.slne.surf.surfapi.hytale.api.coroutines.CoroutineSession -import dev.slne.surf.surfapi.hytale.api.coroutines.HysCoroutineExceptionEvent -import dev.slne.surf.surfapi.hytale.server.coroutines.dispatcher.MainDispatcher -import dev.slne.surf.surfapi.hytale.server.coroutines.dispatcher.PluginDispatcher -import kotlinx.coroutines.* -import java.util.concurrent.TimeUnit -import kotlin.coroutines.CoroutineContext - -internal class CoroutineSessionImpl( - private val plugin: JavaPlugin, -) : CoroutineSession { - override val scope: CoroutineScope - - override val mainDispatcher: CoroutineContext by lazy { - MainDispatcher(plugin) - } - - override val pluginDispatcher: CoroutineContext by lazy { - PluginDispatcher(plugin, 16) - } - - init { - val exceptionHandler = CoroutineExceptionHandler { _, exception -> - val hysCoroutineExceptionEvent = HysCoroutineExceptionEvent(plugin, exception) - - if (plugin.isEnabled) { - HytaleServer.SCHEDULED_EXECUTOR.schedule({ - HytaleServer.get().eventBus.dispatchFor(HysCoroutineExceptionEvent::class.java) - .dispatch(hysCoroutineExceptionEvent) - - if (!hysCoroutineExceptionEvent.isCancelled) { - if (exception !is CancellationException) { - plugin.logger.atSevere().log( - "This is not an error of HysCoroutine! See sub exception for details.", - exception - ) - } - } - }, 0L, TimeUnit.MILLISECONDS) - } - } - - val rootCoroutineScope = CoroutineScope(exceptionHandler) - - scope = rootCoroutineScope + SupervisorJob() + mainDispatcher - } - - fun dispose() { - scope.coroutineContext.cancelChildren() - scope.cancel() - } -} \ No newline at end of file diff --git a/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/coroutines/impl/HysCoroutineImpl.kt b/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/coroutines/impl/HysCoroutineImpl.kt deleted file mode 100644 index 79df0d12..00000000 --- a/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/coroutines/impl/HysCoroutineImpl.kt +++ /dev/null @@ -1,38 +0,0 @@ -package dev.slne.surf.surfapi.hytale.server.coroutines.impl - -import com.hypixel.hytale.server.core.plugin.JavaPlugin -import dev.slne.surf.surfapi.hytale.api.coroutines.CoroutineSession -import dev.slne.surf.surfapi.hytale.api.coroutines.HysCoroutine -import java.util.concurrent.ConcurrentHashMap - -class HysCoroutineImpl : HysCoroutine { - private val items = ConcurrentHashMap() - - override fun getCoroutineSession(plugin: JavaPlugin): CoroutineSession { - if (!items.containsKey(plugin)) { - startCoroutineSession(plugin) - } - - return items[plugin]!! - } - - override fun disable(plugin: JavaPlugin) { - if (!items.containsKey(plugin)) { - return - } - - items.remove(plugin)!!.dispose() - } - - private fun startCoroutineSession(plugin: JavaPlugin) { - if (!plugin.isEnabled) { - throw RuntimeException("Plugin ${plugin.name} attempted to start a new coroutine session while being disabled!") - } - - if (items.containsKey(plugin)) { - return - } - - items[plugin] = CoroutineSessionImpl(plugin) - } -} \ No newline at end of file diff --git a/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/impl/SurfHytaleApiImpl.kt b/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/impl/SurfHytaleApiImpl.kt deleted file mode 100644 index cf149b95..00000000 --- a/surf-api-hytale/surf-api-hytale-server/src/main/kotlin/dev/slne/surf/surfapi/hytale/server/impl/SurfHytaleApiImpl.kt +++ /dev/null @@ -1,23 +0,0 @@ -package dev.slne.surf.surfapi.hytale.server.impl - -import com.google.auto.service.AutoService -import com.hypixel.hytale.server.core.entity.entities.Player -import dev.slne.surf.surfapi.core.api.SurfCoreApi -import dev.slne.surf.surfapi.core.api.util.checkInstantiationByServiceLoader -import dev.slne.surf.surfapi.core.server.impl.SurfCoreApiImpl -import dev.slne.surf.surfapi.hytale.api.SurfHytaleApi -import java.util.* - - -@AutoService(SurfCoreApi::class) -class SurfHytaleApiImpl : SurfCoreApiImpl(), SurfHytaleApi { - init { - checkInstantiationByServiceLoader() - } - - override fun sendPlayerToServer(playerUuid: UUID, server: String) { - throw NotImplementedError() - } - - override fun getPlayer(playerUuid: UUID): Player = throw NotImplementedError() -} diff --git a/surf-api-hytale/surf-api-hytale-server/src/main/resources/manifest.json b/surf-api-hytale/surf-api-hytale-server/src/main/resources/manifest.json deleted file mode 100644 index 5ff017a8..00000000 --- a/surf-api-hytale/surf-api-hytale-server/src/main/resources/manifest.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Group": "HYS", - "Id": "${id}", - "Name": "${name}", - "Version": "${version}", - "Authors": [ - { - "Name": "Ammo" - } - ], - "Main": "dev.slne.surf.surfapi.hytale.server.HytaleMain", - "ServerVersion": "*" -} \ No newline at end of file diff --git a/surf-api-modern-generator/build.gradle.kts b/surf-api-modern-generator/build.gradle.kts index 085dbf84..68cec635 100644 --- a/surf-api-modern-generator/build.gradle.kts +++ b/surf-api-modern-generator/build.gradle.kts @@ -22,7 +22,7 @@ dependencies { implementation("org.jetbrains:annotations:26.1.0") implementation(libs.paper.api) - implementation(project(":surf-api-core:surf-api-core-api")) + implementation(projects.surfApiCore.surfApiCoreApi) } val mcManifestUrl = "https://piston-meta.mojang.com/mc/game/version_manifest_v2.json" @@ -72,7 +72,7 @@ val downloadRegistriesTask by tasks.register("downloadRegistries") { val execOps = project.serviceOf() execOps.javaexec { mainClass.set("net.minecraft.data.Main") - classpath = files(classPath.map { it.toFile() }) + classpath = files(classPath.map { it.toFile() }) args("--reports", "--output", outputDir.absolutePath, "--all") standardOutput = System.out diff --git a/surf-api-shared/surf-api-shared-internal/build.gradle.kts b/surf-api-shared/surf-api-shared-internal/build.gradle.kts index 08b86c6e..dea5eda6 100644 --- a/surf-api-shared/surf-api-shared-internal/build.gradle.kts +++ b/surf-api-shared/surf-api-shared-internal/build.gradle.kts @@ -3,5 +3,5 @@ plugins { } dependencies { - api(project(":surf-api-shared:surf-api-shared-public")) + api(projects.surfApiShared.surfApiSharedPublic) } \ No newline at end of file diff --git a/surf-api-standalone/build.gradle.kts b/surf-api-standalone/build.gradle.kts index 57f9bcee..0fea67fe 100644 --- a/surf-api-standalone/build.gradle.kts +++ b/surf-api-standalone/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } dependencies { - api(project(":surf-api-core:surf-api-core-server")) { + api(projects.surfApiCore.surfApiCoreServer) { exclude(libs.commandapi.core) exclude(libs.brigadier) } diff --git a/surf-api-velocity/surf-api-velocity-api/build.gradle.kts b/surf-api-velocity/surf-api-velocity-api/build.gradle.kts index 736724d9..2ad0e659 100644 --- a/surf-api-velocity/surf-api-velocity-api/build.gradle.kts +++ b/surf-api-velocity/surf-api-velocity-api/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } dependencies { - api(project(":surf-api-core:surf-api-core-api")) + api(projects.surfApiCore.surfApiCoreApi) api(libs.mccoroutine.velocity.api) api(libs.mccoroutine.velocity.core) compileOnlyApi(libs.velocity.api) diff --git a/surf-api-velocity/surf-api-velocity-server/build.gradle.kts b/surf-api-velocity/surf-api-velocity-server/build.gradle.kts index 2ce68a61..bed5c434 100644 --- a/surf-api-velocity/surf-api-velocity-server/build.gradle.kts +++ b/surf-api-velocity/surf-api-velocity-server/build.gradle.kts @@ -4,8 +4,8 @@ plugins { } dependencies { - api(project(":surf-api-core:surf-api-core-server")) - api(project(":surf-api-velocity:surf-api-velocity-api")) + api(projects.surfApiCore.surfApiCoreServer) + api(projects.surfApiVelocity.surfApiVelocityApi) api(libs.dazzleconf) api(libs.spongepowered.math) api(libs.commons.lang3)