This commit is contained in:
2024-12-21 19:33:23 +01:00
parent 51fd5faa4d
commit ec5382316a
3 changed files with 8 additions and 12 deletions

View File

@ -53,5 +53,5 @@ dependencies {
implementation(libs.yamlconfig) implementation(libs.yamlconfig)
implementation(libs.kotlinxSerializationCbor) implementation(libs.kotlinxSerializationCbor)
implementation(libs.ktorRateLimit) implementation(libs.ktorRateLimit)
implementation(libs.knbt) implementation(libs.nbt)
} }

View File

@ -27,16 +27,16 @@ import de.steamwar.sql.NodeDownload
import de.steamwar.sql.NodeMember import de.steamwar.sql.NodeMember
import de.steamwar.sql.SWException import de.steamwar.sql.SWException
import de.steamwar.sql.SchematicNode import de.steamwar.sql.SchematicNode
import dev.dewy.nbt.Nbt
import dev.dewy.nbt.tags.collection.CompoundTag
import io.ktor.http.* import io.ktor.http.*
import io.ktor.server.application.* import io.ktor.server.application.*
import io.ktor.server.auth.* import io.ktor.server.auth.*
import io.ktor.server.request.* import io.ktor.server.request.*
import io.ktor.server.response.* import io.ktor.server.response.*
import io.ktor.server.routing.* import io.ktor.server.routing.*
import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromByteArray import kotlinx.serialization.decodeFromByteArray
import net.benwoodworth.knbt.*
import java.security.MessageDigest import java.security.MessageDigest
import java.time.Duration import java.time.Duration
import java.time.Instant import java.time.Instant
@ -75,10 +75,7 @@ data class SchematicCode(val id: Int, val code: String, val expires: Long)
@Serializable @Serializable
data class UploadSchematic(val name: String, val content: String) data class UploadSchematic(val name: String, val content: String)
val nbt = Nbt { val nbt = Nbt()
variant = NbtVariant.Java
compression = NbtCompression.Gzip
}
fun Route.configureSchematic() { fun Route.configureSchematic() {
route("/download/{code}") { route("/download/{code}") {
@ -129,14 +126,14 @@ fun Route.configureSchematic() {
try { try {
val content = Base64.getDecoder().decode(file.content) val content = Base64.getDecoder().decode(file.content)
var schem = nbt.decodeFromByteArray<NbtCompound>(content) var schem = nbt.fromByteArray(content)
if (schem.size == 1) schem = schem[schem.keys.first()] as NbtCompound if (schem.size() == 1) schem = schem.first() as CompoundTag
val version = schem.let { val version = schem.let {
if (it.containsKey("Materials")) if (it.contains("Materials"))
return@let SchematicFormat.MCEDIT return@let SchematicFormat.MCEDIT
else if (it.containsKey("Blocks")) else if (it.contains("Blocks"))
return@let SchematicFormat.SPONGE_V3 return@let SchematicFormat.SPONGE_V3
else else
return@let SchematicFormat.SPONGE_V2 return@let SchematicFormat.SPONGE_V2

View File

@ -165,7 +165,6 @@ dependencyResolutionManagement {
library("kotlinxSerializationCbor", "org.jetbrains.kotlinx:kotlinx-serialization-cbor:1.4.1") library("kotlinxSerializationCbor", "org.jetbrains.kotlinx:kotlinx-serialization-cbor:1.4.1")
library("ktorRateLimit", "io.ktor:ktor-server-rate-limit:$ktorVersion") library("ktorRateLimit", "io.ktor:ktor-server-rate-limit:$ktorVersion")
library("knbt", "net.benwoodworth.knbt:knbt:0.11.7")
library("nbt", "dev.dewy:nbt:1.5.1") library("nbt", "dev.dewy:nbt:1.5.1")
} }
} }