From 4a9f35ffdd2310af2b3a074257d8242400be3d9e Mon Sep 17 00:00:00 2001 From: RTAkland Date: Sun, 6 Sep 2026 14:58:15 +0800 Subject: [PATCH] Formatted code --- README.md | 11 +-- gradle.properties | 1 - .../kotlin/cn/rtast/libmc/common/buffer.kt | 78 ------------------- .../cn/rtast/libmc/common/mc_primitives.kt | 78 +++++++++++++++++++ .../libmc/common/packet/UnknownPacket.kt | 2 +- .../cn/rtast/libmc/common/channels.native.kt | 2 +- .../cn/rtast/libmc/mcping/bedrock/packet.kt | 2 +- .../libmc/mcping/bedrock/packet_writer.kt | 2 +- .../mcping/bedrock/ping_response_parser.kt | 2 +- .../ClientboundRemoveResourcePackPacket.kt | 5 +- .../clientbound/ClientboundLoginPlayPacket.kt | 4 +- .../ServerboundSpectatorActionPacket.kt | 2 +- .../serverbound/ServerboundUseItemOnPacket.kt | 2 +- .../protocol/protocol/game/block/BlockPos.kt | 2 +- 14 files changed, 98 insertions(+), 95 deletions(-) diff --git a/README.md b/README.md index f6783f7..889339e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # libmc -A lightweight minecraft related library, such as rcon client, motd ping and more for kotlin multiplatform and java, -no dependencies in `jvm` target except `kotlin-stdlib` +A lightweight minecraft related library, such as rcon client, motd ping and more for kotlin multiplatform and java, no +dependencies in `jvm` target except `kotlin-stdlib` native platforms required `ktor-network` and `kotlinx-io` @@ -60,9 +60,10 @@ void main() { ## Other resources -> An example of java ping json response can be found at [ping-response-example](example/java-ping-response.json) (Formatted), -> a raw response of bedrock ping response can be found at [bedrock-pinng-raw-response](example/bedrock-pinng-raw-response.txt) - +> An example of java ping json response can be found at [ping-response-example](example/java-ping-response.json) +> (Formatted), +> a raw response of bedrock ping response can be found +> at [bedrock-pinng-raw-response](example/bedrock-pinng-raw-response.txt) # rcon client diff --git a/gradle.properties b/gradle.properties index b518a9d..fcd0237 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,6 +3,5 @@ kotlin.native.ignoreDisabledTargets=true kotlin.native.enableKlibsCrossCompilation=true kotlin.daemon.jvmargs=-Xmx2048M org.gradle.jvmargs=-Xmx3g -Dfile.encoding=UTF-8 - libVersion=0.1.0 protocolVersion=26.2 \ No newline at end of file diff --git a/libmc-common/src/commonMain/kotlin/cn/rtast/libmc/common/buffer.kt b/libmc-common/src/commonMain/kotlin/cn/rtast/libmc/common/buffer.kt index 14dcc8e..d5c7b94 100644 --- a/libmc-common/src/commonMain/kotlin/cn/rtast/libmc/common/buffer.kt +++ b/libmc-common/src/commonMain/kotlin/cn/rtast/libmc/common/buffer.kt @@ -7,8 +7,6 @@ package cn.rtast.libmc.common -import kotlin.uuid.Uuid - public expect class BytesBuffer { public constructor() public constructor(bytes: ByteArray) @@ -42,82 +40,6 @@ public expect class BytesBuffer { @Suppress("NOTHING_TO_INLINE") public inline fun ByteArray.wrap(): BytesBuffer = BytesBuffer(this) -public fun BytesBuffer.writeUuid(uuid: Uuid): Unit = uuid.toLongs { mostSignificantBits, leastSignificantBits -> - this.writeLong(mostSignificantBits) - this.writeLong(leastSignificantBits) -} - -public fun BytesBuffer.readUuid(): Uuid { - val most = this.readLong() - val least = this.readLong() - return Uuid.fromLongs(most, least) -} - -public fun BytesBuffer.writeVarInt(value: Int): Unit = VarIntCodec.encode(this, value) -public fun BytesBuffer.readVarInt(): Int = VarIntCodec.decode(this) - -public fun BytesBuffer.writeVarLong(value: Long): Unit = VarLongCodec.encode(this, value) -public fun BytesBuffer.readVarLong(): Long = VarLongCodec.decode(this) - -public fun BytesBuffer.writeMcString(value: String): Unit = McStringCodec.encode(this, value) -public fun BytesBuffer.readMcString(): String = McStringCodec.decode(this) - -public fun BytesBuffer.readPrefixedByteArray(): ByteArray { - val length = this.readVarInt() - val data = this.readBytes(length) - return data -} - -public fun BytesBuffer.writePrefixedByteArray(data: ByteArray) { - this.writeVarInt(data.size) - this.writeBytes(data) -} - -public fun BytesBuffer.readOptionalPrefixedByteArray(): ByteArray? { - val isPresent = this.readBoolean() - return if (isPresent) { - val length = this.readVarInt() - this.readBytes(length) - } else null -} - -public fun BytesBuffer.writeOptionalPrefixedByteArray(data: ByteArray?) { - if (data != null) { - this.writeBoolean(true) - this.writeVarInt(data.size) - this.writeBytes(data) - } else this.writeBoolean(false) -} - -public fun BytesBuffer.readPrefixedVarIntArray(): List { - val length = readVarInt() - val list = ArrayList(length) - repeat(length) { list.add(readVarInt()) } - return list -} - -public fun BytesBuffer.writePrefixedVarIntArray(value: List) { - writeVarInt(value.size) - for (item in value) writeVarInt(item) -} - -public fun BytesBuffer.readPrefixedStringArray(): List { - val length = readVarInt() - val list = ArrayList(length) - repeat(length) { list.add(readMcString()) } - return list -} - -public fun BytesBuffer.writePrefixedStringArray(value: List) { - writeVarInt(value.size) - for (item in value) writeMcString(item) -} - -public inline fun BytesBuffer.writePrefixedArray(value: List, writeItem: BytesBuffer.(T) -> Unit) { - writeVarInt(value.size) - for (item in value) writeItem(item) -} - public fun ReadChannel.readPacketFrame(): BytesBuffer { val length = this.readVarInt() return this.readBytes(length).wrap() diff --git a/libmc-common/src/commonMain/kotlin/cn/rtast/libmc/common/mc_primitives.kt b/libmc-common/src/commonMain/kotlin/cn/rtast/libmc/common/mc_primitives.kt index 899dbc9..73d4df7 100644 --- a/libmc-common/src/commonMain/kotlin/cn/rtast/libmc/common/mc_primitives.kt +++ b/libmc-common/src/commonMain/kotlin/cn/rtast/libmc/common/mc_primitives.kt @@ -6,6 +6,8 @@ package cn.rtast.libmc.common +import kotlin.uuid.Uuid + public object VarIntCodec : PacketCodec { override fun encode(buffer: BytesBuffer, value: Int) { var v = value @@ -95,4 +97,80 @@ public inline fun BytesBuffer.writeIdOrX(value: IdOrX, writeX: BytesBuffe public inline fun BytesBuffer.readIdOrX(readX: BytesBuffer.() -> T): IdOrX { val id = this.readVarInt() return if (id == 0) IdOrX.Inline(this.readX()) else IdOrX.Reference(id - 1) +} + +public fun BytesBuffer.writeUuid(uuid: Uuid): Unit = uuid.toLongs { mostSignificantBits, leastSignificantBits -> + this.writeLong(mostSignificantBits) + this.writeLong(leastSignificantBits) +} + +public fun BytesBuffer.readUuid(): Uuid { + val most = this.readLong() + val least = this.readLong() + return Uuid.fromLongs(most, least) +} + +public fun BytesBuffer.writeVarInt(value: Int): Unit = VarIntCodec.encode(this, value) +public fun BytesBuffer.readVarInt(): Int = VarIntCodec.decode(this) + +public fun BytesBuffer.writeVarLong(value: Long): Unit = VarLongCodec.encode(this, value) +public fun BytesBuffer.readVarLong(): Long = VarLongCodec.decode(this) + +public fun BytesBuffer.writeMcString(value: String): Unit = McStringCodec.encode(this, value) +public fun BytesBuffer.readMcString(): String = McStringCodec.decode(this) + +public fun BytesBuffer.readPrefixedByteArray(): ByteArray { + val length = this.readVarInt() + val data = this.readBytes(length) + return data +} + +public fun BytesBuffer.writePrefixedByteArray(data: ByteArray) { + this.writeVarInt(data.size) + this.writeBytes(data) +} + +public fun BytesBuffer.readOptionalPrefixedByteArray(): ByteArray? { + val isPresent = this.readBoolean() + return if (isPresent) { + val length = this.readVarInt() + this.readBytes(length) + } else null +} + +public fun BytesBuffer.writeOptionalPrefixedByteArray(data: ByteArray?) { + if (data != null) { + this.writeBoolean(true) + this.writeVarInt(data.size) + this.writeBytes(data) + } else this.writeBoolean(false) +} + +public fun BytesBuffer.readPrefixedVarIntArray(): List { + val length = readVarInt() + val list = ArrayList(length) + repeat(length) { list.add(readVarInt()) } + return list +} + +public fun BytesBuffer.writePrefixedVarIntArray(value: List) { + writeVarInt(value.size) + for (item in value) writeVarInt(item) +} + +public fun BytesBuffer.readPrefixedStringArray(): List { + val length = readVarInt() + val list = ArrayList(length) + repeat(length) { list.add(readMcString()) } + return list +} + +public fun BytesBuffer.writePrefixedStringArray(value: List) { + writeVarInt(value.size) + for (item in value) writeMcString(item) +} + +public inline fun BytesBuffer.writePrefixedArray(value: List, writeItem: BytesBuffer.(T) -> Unit) { + writeVarInt(value.size) + for (item in value) writeItem(item) } \ No newline at end of file diff --git a/libmc-common/src/commonMain/kotlin/cn/rtast/libmc/common/packet/UnknownPacket.kt b/libmc-common/src/commonMain/kotlin/cn/rtast/libmc/common/packet/UnknownPacket.kt index 7a026e2..c53f5e1 100644 --- a/libmc-common/src/commonMain/kotlin/cn/rtast/libmc/common/packet/UnknownPacket.kt +++ b/libmc-common/src/commonMain/kotlin/cn/rtast/libmc/common/packet/UnknownPacket.kt @@ -10,7 +10,7 @@ package cn.rtast.libmc.common.packet /** * reserved packet */ -public data class UnknownPacket(val packetId: Int, val data: ByteArray): MinecraftPacket { +public data class UnknownPacket(val packetId: Int, val data: ByteArray) : MinecraftPacket { override fun equals(other: Any?): Boolean { if (this === other) return true if (other == null || this::class != other::class) return false diff --git a/libmc-common/src/nativeMain/kotlin/cn/rtast/libmc/common/channels.native.kt b/libmc-common/src/nativeMain/kotlin/cn/rtast/libmc/common/channels.native.kt index 48b9e06..88df3ec 100644 --- a/libmc-common/src/nativeMain/kotlin/cn/rtast/libmc/common/channels.native.kt +++ b/libmc-common/src/nativeMain/kotlin/cn/rtast/libmc/common/channels.native.kt @@ -7,7 +7,7 @@ package cn.rtast.libmc.common import io.ktor.utils.io.* -import io.ktor.utils.io.bits.reverseByteOrder +import io.ktor.utils.io.bits.* import kotlinx.coroutines.runBlocking public actual class ReadChannel(private val _readChannel: ByteReadChannel) { diff --git a/libmc-mcping/src/commonMain/kotlin/cn/rtast/libmc/mcping/bedrock/packet.kt b/libmc-mcping/src/commonMain/kotlin/cn/rtast/libmc/mcping/bedrock/packet.kt index 0bc3420..9a64922 100644 --- a/libmc-mcping/src/commonMain/kotlin/cn/rtast/libmc/mcping/bedrock/packet.kt +++ b/libmc-mcping/src/commonMain/kotlin/cn/rtast/libmc/mcping/bedrock/packet.kt @@ -7,8 +7,8 @@ package cn.rtast.libmc.mcping.bedrock -import cn.rtast.libmc.common.PacketCodec import cn.rtast.libmc.common.BytesBuffer +import cn.rtast.libmc.common.PacketCodec import kotlin.random.Random private val RAKNET_MAGIC = byteArrayOf( diff --git a/libmc-mcping/src/commonMain/kotlin/cn/rtast/libmc/mcping/bedrock/packet_writer.kt b/libmc-mcping/src/commonMain/kotlin/cn/rtast/libmc/mcping/bedrock/packet_writer.kt index 82515a7..143dfa9 100644 --- a/libmc-mcping/src/commonMain/kotlin/cn/rtast/libmc/mcping/bedrock/packet_writer.kt +++ b/libmc-mcping/src/commonMain/kotlin/cn/rtast/libmc/mcping/bedrock/packet_writer.kt @@ -7,8 +7,8 @@ package cn.rtast.libmc.mcping.bedrock -import cn.rtast.libmc.common.PacketCodec import cn.rtast.libmc.common.BytesBuffer +import cn.rtast.libmc.common.PacketCodec import cn.rtast.libmc.common.UdpSocket diff --git a/libmc-mcping/src/commonMain/kotlin/cn/rtast/libmc/mcping/bedrock/ping_response_parser.kt b/libmc-mcping/src/commonMain/kotlin/cn/rtast/libmc/mcping/bedrock/ping_response_parser.kt index a9aae13..2f67a1c 100644 --- a/libmc-mcping/src/commonMain/kotlin/cn/rtast/libmc/mcping/bedrock/ping_response_parser.kt +++ b/libmc-mcping/src/commonMain/kotlin/cn/rtast/libmc/mcping/bedrock/ping_response_parser.kt @@ -95,7 +95,7 @@ public data class BedrockPingResponse( * latency ms * reserved not exists in response packet */ - val latency: Int + val latency: Int, ) internal fun PingResponse.parseBedrockPingResponse(): BedrockPingResponse { diff --git a/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/configuration/clientbound/ClientboundRemoveResourcePackPacket.kt b/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/configuration/clientbound/ClientboundRemoveResourcePackPacket.kt index 201308d..66abf2c 100644 --- a/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/configuration/clientbound/ClientboundRemoveResourcePackPacket.kt +++ b/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/configuration/clientbound/ClientboundRemoveResourcePackPacket.kt @@ -7,8 +7,9 @@ package cn.rtast.libmc.protocol.packet.configuration.clientbound -import cn.rtast.libmc.common.* -import cn.rtast.libmc.protocol.protocol.util.readNetworkNBTCompound +import cn.rtast.libmc.common.BytesBuffer +import cn.rtast.libmc.common.PacketCodec +import cn.rtast.libmc.common.readUuid import kotlin.uuid.Uuid public data class ClientboundRemoveResourcePackPacket(val uuid: Uuid) : ClientboundConfigurationPacket { diff --git a/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/play/clientbound/ClientboundLoginPlayPacket.kt b/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/play/clientbound/ClientboundLoginPlayPacket.kt index 444f3e6..bacff8c 100644 --- a/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/play/clientbound/ClientboundLoginPlayPacket.kt +++ b/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/play/clientbound/ClientboundLoginPlayPacket.kt @@ -10,9 +10,11 @@ package cn.rtast.libmc.protocol.packet.play.clientbound import cn.rtast.libmc.common.BytesBuffer import cn.rtast.libmc.common.PacketCodec import cn.rtast.libmc.common.readVarInt -import cn.rtast.libmc.protocol.protocol.game.* +import cn.rtast.libmc.protocol.protocol.game.GameMode +import cn.rtast.libmc.protocol.protocol.game.Identifier import cn.rtast.libmc.protocol.protocol.game.block.BlockPos import cn.rtast.libmc.protocol.protocol.game.block.readBlockPos +import cn.rtast.libmc.protocol.protocol.game.readIdentifier public data class ClientboundLoginPlayPacket( val entityId: Int, diff --git a/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/play/serverbound/ServerboundSpectatorActionPacket.kt b/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/play/serverbound/ServerboundSpectatorActionPacket.kt index 15bf3d5..8efc3e1 100644 --- a/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/play/serverbound/ServerboundSpectatorActionPacket.kt +++ b/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/play/serverbound/ServerboundSpectatorActionPacket.kt @@ -17,7 +17,7 @@ public data class ServerboundSpectatorActionPacket( * If 0, the player was not targeting an entity. * Otherwise, the ID of the targeted entity plus 1. */ - val entityId: Int + val entityId: Int, ) : MinecraftPacket { public companion object Codec : PacketCodec { override fun encode(buffer: BytesBuffer, value: ServerboundSpectatorActionPacket) { diff --git a/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/play/serverbound/ServerboundUseItemOnPacket.kt b/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/play/serverbound/ServerboundUseItemOnPacket.kt index bc34bc9..6d6e537 100644 --- a/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/play/serverbound/ServerboundUseItemOnPacket.kt +++ b/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/packet/play/serverbound/ServerboundUseItemOnPacket.kt @@ -28,7 +28,7 @@ public data class ServerboundUseItemOnPacket( /** * see [cn.rtast.libmc.protocol.packet.play.clientbound.ClientboundAcknowledgeBlockChangePacket] */ - val sequence: Int + val sequence: Int, ) : MinecraftPacket { public companion object Codec : PacketCodec { override fun encode(buffer: BytesBuffer, value: ServerboundUseItemOnPacket) { diff --git a/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/protocol/game/block/BlockPos.kt b/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/protocol/game/block/BlockPos.kt index 7aa807b..f87416d 100644 --- a/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/protocol/game/block/BlockPos.kt +++ b/libmc-protocol/src/commonMain/kotlin/cn/rtast/libmc/protocol/protocol/game/block/BlockPos.kt @@ -7,8 +7,8 @@ package cn.rtast.libmc.protocol.protocol.game.block -import cn.rtast.libmc.common.PacketCodec import cn.rtast.libmc.common.BytesBuffer +import cn.rtast.libmc.common.PacketCodec import kotlinx.serialization.Serializable /**