Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
javaVersion=25
mcVersion=26.2
group=dev.slne.surf.api
version=3.34.0
version=3.35.0
relocationPrefix=dev.slne.surf.api.libs
snapshot=false
3 changes: 3 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@ dokka = "2.2.0"
paper-api = { module = "io.papermc.paper:paper-api", version.ref = "paper-api" }
canvas-api = { module = "io.canvasmc.canvas:canvas-api", version.ref = "canvas-api" }

# Minestom
surf-minestom-lobby-api = { module = "dev.slne.minestom.lobby:surf-minestom-lobby-api", version = "+" }

Comment on lines +80 to +82
# Kotlin
kotlinxCoroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinxCoroutines" }
kotlinxCoroutines-reactor = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-reactor", version.ref = "kotlinxCoroutines" }
Expand Down
2 changes: 2 additions & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ include("surf-api-shared")
include("surf-api-shared:surf-api-shared-public")
include("surf-api-shared:surf-api-shared-internal")

include("surf-api-minestom")

val ci = System.getenv("CI")?.toBoolean() ?: false

if (!ci) {
Expand Down
7 changes: 6 additions & 1 deletion surf-api-gradle-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ plugins {

group = groupId
version = buildString {
append("2.0.8")
append("2.1.0")
if (snapshot) append("-SNAPSHOT")
}
Comment on lines 21 to 25

Expand Down Expand Up @@ -81,6 +81,11 @@ gradlePlugin {
id = "dev.slne.surf.api.gradle.velocity"
implementationClass = "dev.slne.surf.api.gradle.platform.velocity.VelocitySurfPlugin"
}

create("minestom") {
id = "dev.slne.surf.api.gradle.minestom"
implementationClass = "dev.slne.surf.api.gradle.platform.minestom.MinestomSurfPlugin"
}
}

publishing {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@ enum class SurfApiPlatform(val dependency: String, val scope: String = COMPILE_O
CORE("dev.slne.surf.api:surf-api-core:${Constants.SURF_API_VERSION}"),
PAPER("dev.slne.surf.api:surf-api-paper:${Constants.SURF_API_VERSION}"),
VELOCITY("dev.slne.surf.api:surf-api-velocity:${Constants.SURF_API_VERSION}"),
MINESTOM("dev.slne.surf.api:surf-api-minestom:${Constants.SURF_API_VERSION}"),
STANDALONE("dev.slne.surf.api:surf-api-standalone:${Constants.SURF_API_VERSION}", API),
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package dev.slne.surf.api.gradle.platform.minestom

import dev.slne.surf.api.gradle.platform.core.CoreSurfExtension
import org.gradle.api.model.ObjectFactory
import javax.inject.Inject

open class MinestomSurfExtension @Inject constructor(
objects: ObjectFactory,
) : CoreSurfExtension(objects)
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package dev.slne.surf.api.gradle.platform.minestom

import dev.slne.surf.api.gradle.platform.SurfApiPlatform
import dev.slne.surf.api.gradle.platform.core.AbstractCoreSurfPlugin

internal class MinestomSurfPlugin : AbstractCoreSurfPlugin<MinestomSurfExtension>(
platformName = "minestom",
platform = SurfApiPlatform.MINESTOM,
) {
override val extensionClass = MinestomSurfExtension::class.java
}
32 changes: 32 additions & 0 deletions surf-api-minestom/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
plugins {
`core-convention`
`api-validation`
}

dependencies {
api(projects.surfApiCore.surfApiCore) {
exclude(libs.commandapi.core)
exclude(libs.brigadier)
}

implementation(projects.surfApiCore.surfApiCoreServer)
compileOnlyApi(libs.surf.minestom.lobby.api)
Comment on lines +1 to +13

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.flogger)
api(libs.commons.math4.core)
api(libs.commons.math3)
implementation(libs.packetevents.netty.common)
runtimeOnly(libs.flogger.slf4j.backend)
}

description = "surf-api-minestom"

private fun <T : ModuleDependency> T.exclude(provider: Provider<MinimalExternalModuleDependency>) =
provider.get().module.apply { exclude(group, name) }
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package dev.slne.surf.api.minestom

import com.github.retrooper.packetevents.PacketEvents
import com.google.inject.Inject
import com.google.inject.Singleton
import dev.slne.minestom.lobby.api.plugin.MinestomPluginEntrypoint
import dev.slne.surf.api.core.extensions.packetEvents
import dev.slne.surf.api.core.server.packet.NoopPacketEvents
import dev.slne.surf.api.minestom.impl.SurfMinestomInstance

@Singleton
internal class SurfApiMinestomEntrypoint @Inject constructor() : MinestomPluginEntrypoint {
override suspend fun start() {
preparePacketEvents()
SurfMinestomInstance.bootstrap()
SurfMinestomInstance.onLoad()
SurfMinestomInstance.onEnable()
}

override suspend fun stop() {
SurfMinestomInstance.onDisable()
}
Comment on lines +20 to +22

private fun preparePacketEvents() {
PacketEvents.setAPI(NoopPacketEvents())
packetEvents.load()
packetEvents.init()
}

private fun destroyPacketEvents() {
packetEvents.terminate()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package dev.slne.surf.api.minestom

import com.google.auto.service.AutoService
import dev.slne.minestom.lobby.api.plugin.MinestomPlugin
import dev.slne.minestom.lobby.api.plugin.annotation.MinestomPluginMeta

@AutoService(MinestomPlugin::class)
@MinestomPluginMeta("surf-api-minestom")
internal class SurfApiMinestomPlugin: MinestomPlugin(SurfApiMinestomEntrypoint::class.java)
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package dev.slne.surf.api.minestom.impl

import com.google.auto.service.AutoService
import dev.slne.surf.api.core.config.serializer.SpongeConfigSerializers

@AutoService(SpongeConfigSerializers::class)
internal class MinestomSpongeConfigSerializer : SpongeConfigSerializers()
Comment on lines +6 to +7
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package dev.slne.surf.api.minestom.impl

import com.google.auto.service.AutoService
import dev.slne.surf.api.core.SurfApiCore
import dev.slne.surf.api.core.server.impl.SurfApiCoreImpl
import dev.slne.surf.api.core.util.checkInstantiationByServiceLoader
import net.kyori.adventure.audience.Audience
import net.minestom.server.MinecraftServer
import net.minestom.server.entity.Player
import net.minestom.server.network.NetworkBuffer
import java.util.*


@AutoService(SurfApiCore::class)
internal class SurfMinestomApiImpl : SurfApiCoreImpl() {
init {
checkInstantiationByServiceLoader()
}

override fun isPlayer(audience: Audience): Boolean {
return audience is Player
}

override fun sendPlayerToServer(playerUuid: UUID, server: String) {
MinecraftServer
.getConnectionManager()
.getOnlinePlayerByUuid(playerUuid)
?.sendPluginMessage(
"bungeecord:main",
NetworkBuffer.makeArray { buffer ->
buffer.write(NetworkBuffer.STRING_IO_UTF8, "Connect")
buffer.write(NetworkBuffer.STRING_IO_UTF8, server)
}
)
}

override fun getPlayer(playerUuid: UUID): Any? {
return MinecraftServer
.getConnectionManager()
.getOnlinePlayerByUuid(playerUuid)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package dev.slne.surf.api.minestom.impl

import dev.slne.surf.api.core.server.CoreInstance

internal object SurfMinestomInstance: CoreInstance()
Loading