Rename package name of libmc-common

This commit is contained in:
2026-09-07 08:06:18 +08:00
parent 641df674e4
commit d7300451f8
290 files changed
+1071 -1074

No files matched your search

@@ -1,10 +0,0 @@
/*
* Copyright © 2026 RTAkland
* Author: RTAkland
* Date: 2026/9/4
*/
package cn.rtast.libmc.common.packet
public interface MinecraftPacket : PacketEvent
@@ -1,10 +0,0 @@
/*
* Copyright © 2026 RTAkland
* Author: RTAkland
* Date: 2026/9/5
*/
package cn.rtast.libmc.common.packet
public interface PacketEvent
@@ -5,7 +5,7 @@
*/ */
package cn.rtast.libmc.common package cn.rtast.libmc
/** /**
* An object class used to pass some parameters * An object class used to pass some parameters
@@ -5,7 +5,7 @@
*/ */
package cn.rtast.libmc.common.crypto package cn.rtast.libmc.crypto
public fun interface AuthenticationProvider { public fun interface AuthenticationProvider {
public suspend fun joinServer(url: String, accessToken: String, uuid: String, serverIdHash: String) public suspend fun joinServer(url: String, accessToken: String, uuid: String, serverIdHash: String)
@@ -5,7 +5,7 @@
*/ */
package cn.rtast.libmc.common.crypto package cn.rtast.libmc.crypto
public interface NetworkCipher { public interface NetworkCipher {
public suspend fun encrypt(buffer: ByteArray, offset: Int, length: Int) public suspend fun encrypt(buffer: ByteArray, offset: Int, length: Int)
@@ -5,7 +5,7 @@
*/ */
package cn.rtast.libmc.common.crypto package cn.rtast.libmc.crypto
public data class ProtocolContext( public data class ProtocolContext(
val rsaEncryptor: RSA1024Encryptor, val rsaEncryptor: RSA1024Encryptor,
@@ -20,7 +20,8 @@ public class ProtocolContextBuilder(private val onlineMode: Boolean) {
public lateinit var cipherFactory: (sharedKey: ByteArray) -> NetworkCipher public lateinit var cipherFactory: (sharedKey: ByteArray) -> NetworkCipher
public lateinit var authProvider: AuthenticationProvider public lateinit var authProvider: AuthenticationProvider
public fun build(): ProtocolContext = ProtocolContext( public fun build(): ProtocolContext =
ProtocolContext(
rsaEncryptor = if (::rsaEncryptor.isInitialized) rsaEncryptor else error("rsaEncryptor is required"), rsaEncryptor = if (::rsaEncryptor.isInitialized) rsaEncryptor else error("rsaEncryptor is required"),
sha1Hasher = if (::sha1Hasher.isInitialized) sha1Hasher else error("sha1Hasher is required"), sha1Hasher = if (::sha1Hasher.isInitialized) sha1Hasher else error("sha1Hasher is required"),
cipherFactory = if (::cipherFactory.isInitialized) cipherFactory else error("cipherFactory is required"), cipherFactory = if (::cipherFactory.isInitialized) cipherFactory else error("cipherFactory is required"),
@@ -5,17 +5,17 @@
*/ */
package cn.rtast.libmc.common.packet package cn.rtast.libmc.packet
/** /**
* reserved packet * reserved packet
*/ */
public data class UnknownPacket(val packetId: Int, val data: ByteArray) : MinecraftPacket { public data class ClientboundUnknownPacket(val packetId: Int, val data: ByteArray) : MinecraftPacket {
override fun equals(other: Any?): Boolean { override fun equals(other: Any?): Boolean {
if (this === other) return true if (this === other) return true
if (other == null || this::class != other::class) return false if (other == null || this::class != other::class) return false
other as UnknownPacket other as ClientboundUnknownPacket
if (packetId != other.packetId) return false if (packetId != other.packetId) return false
if (!data.contentEquals(other.data)) return false if (!data.contentEquals(other.data)) return false
@@ -0,0 +1,10 @@
/*
* Copyright © 2026 RTAkland
* Author: RTAkland
* Date: 2026/9/4
*/
package cn.rtast.libmc.packet
public interface MinecraftPacket
@@ -5,9 +5,9 @@
*/ */
package cn.rtast.libmc.common.packet package cn.rtast.libmc.packet
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
public interface Encoder<in T> { public interface Encoder<in T> {
public suspend fun encode(buffer: BytesBuffer, value: T) public suspend fun encode(buffer: BytesBuffer, value: T)
@@ -5,10 +5,10 @@
*/ */
package cn.rtast.libmc.common.packet package cn.rtast.libmc.packet
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.primitives.writeVarInt
import cn.rtast.libmc.common.primitives.writeVarInt import cn.rtast.libmc.stream.BytesBuffer
import kotlin.reflect.KClass import kotlin.reflect.KClass
public class PacketRegistry { public class PacketRegistry {
@@ -29,7 +29,7 @@ public class PacketRegistry {
} }
public suspend fun decodePacket(packetId: Int, buffer: BytesBuffer): MinecraftPacket = public suspend fun decodePacket(packetId: Int, buffer: BytesBuffer): MinecraftPacket =
idToCodec[packetId]?.decode(buffer) ?: UnknownPacket(packetId, buffer.readBytes(buffer.remaining.toInt())) idToCodec[packetId]?.decode(buffer) ?: ClientboundUnknownPacket(packetId, buffer.readRemainingBytes())
public suspend fun <T : MinecraftPacket> encodePacket(buffer: BytesBuffer, packet: T) { public suspend fun <T : MinecraftPacket> encodePacket(buffer: BytesBuffer, packet: T) {
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
@@ -5,9 +5,9 @@
*/ */
package cn.rtast.libmc.common.primitives package cn.rtast.libmc.primitives
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
public suspend fun BytesBuffer.readBitSet(): LongArray { public suspend fun BytesBuffer.readBitSet(): LongArray {
val count = this.readVarInt() val count = this.readVarInt()
@@ -5,9 +5,9 @@
*/ */
package cn.rtast.libmc.common.primitives package cn.rtast.libmc.primitives
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
public sealed interface IdOrX<out T> { public sealed interface IdOrX<out T> {
public data class Inline<T>(val value: T) : IdOrX<T> public data class Inline<T>(val value: T) : IdOrX<T>
@@ -5,9 +5,9 @@
*/ */
package cn.rtast.libmc.common.primitives package cn.rtast.libmc.primitives
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
public sealed interface IdSet { public sealed interface IdSet {
public data class Tag(val tagName: String) : IdSet public data class Tag(val tagName: String) : IdSet
@@ -5,10 +5,10 @@
*/ */
package cn.rtast.libmc.common.primitives package cn.rtast.libmc.primitives
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.stream.BytesBuffer
public object McStringCodec : PacketCodec<String> { public object McStringCodec : PacketCodec<String> {
override suspend fun encode(buffer: BytesBuffer, value: String) { override suspend fun encode(buffer: BytesBuffer, value: String) {
@@ -5,9 +5,9 @@
*/ */
package cn.rtast.libmc.common.primitives package cn.rtast.libmc.primitives
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
public suspend inline fun <T> BytesBuffer.readOptional(block: BytesBuffer.() -> T): T? { public suspend inline fun <T> BytesBuffer.readOptional(block: BytesBuffer.() -> T): T? {
val hasData = this.readBoolean() val hasData = this.readBoolean()
@@ -5,9 +5,9 @@
*/ */
package cn.rtast.libmc.common.primitives package cn.rtast.libmc.primitives
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
public suspend fun BytesBuffer.readPrefixedByteArray(): ByteArray { public suspend fun BytesBuffer.readPrefixedByteArray(): ByteArray {
@@ -5,9 +5,9 @@
*/ */
package cn.rtast.libmc.common.primitives package cn.rtast.libmc.primitives
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import kotlin.uuid.Uuid import kotlin.uuid.Uuid
public suspend fun BytesBuffer.writeUuid(uuid: Uuid): Unit = uuid.toLongs { mostSignificantBits, leastSignificantBits -> public suspend fun BytesBuffer.writeUuid(uuid: Uuid): Unit = uuid.toLongs { mostSignificantBits, leastSignificantBits ->
@@ -5,10 +5,10 @@
*/ */
package cn.rtast.libmc.common.primitives package cn.rtast.libmc.primitives
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.stream.BytesBuffer
public object VarIntCodec : PacketCodec<Int> { public object VarIntCodec : PacketCodec<Int> {
override suspend fun encode(buffer: BytesBuffer, value: Int) { override suspend fun encode(buffer: BytesBuffer, value: Int) {
@@ -5,10 +5,10 @@
*/ */
package cn.rtast.libmc.common.primitives package cn.rtast.libmc.primitives
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.stream.BytesBuffer
public object VarLongCodec : PacketCodec<Long> { public object VarLongCodec : PacketCodec<Long> {
override suspend fun encode(buffer: BytesBuffer, value: Long) { override suspend fun encode(buffer: BytesBuffer, value: Long) {
@@ -5,7 +5,7 @@
*/ */
package cn.rtast.libmc.common.stream package cn.rtast.libmc.stream
public expect class BytesBuffer { public expect class BytesBuffer {
public constructor() public constructor()
@@ -5,7 +5,7 @@
*/ */
package cn.rtast.libmc.common.stream package cn.rtast.libmc.stream
public enum class ByteOrder { public enum class ByteOrder {
BIG_ENDIAN, LITTLE_ENDIAN BIG_ENDIAN, LITTLE_ENDIAN
@@ -5,7 +5,7 @@
*/ */
package cn.rtast.libmc.common.stream package cn.rtast.libmc.stream
public expect open class ReadChannel() { public expect open class ReadChannel() {
public open suspend fun readByte(): Byte public open suspend fun readByte(): Byte
@@ -5,9 +5,10 @@
*/ */
package cn.rtast.libmc.common.stream package cn.rtast.libmc.stream
import cn.rtast.libmc.LibMCContext
import cn.rtast.libmc.common.LibMCContext
public expect class Socket public constructor(host: String, port: Int, context: LibMCContext) { public expect class Socket public constructor(host: String, port: Int, context: LibMCContext) {
public fun openReadChannel(): ReadChannel public fun openReadChannel(): ReadChannel
@@ -5,7 +5,7 @@
*/ */
package cn.rtast.libmc.common package cn.rtast.libmc
public expect fun ByteArray.zlibDecompress(): ByteArray public expect fun ByteArray.zlibDecompress(): ByteArray
@@ -7,8 +7,8 @@
package test package test
import cn.rtast.libmc.common.zlibCompress import cn.rtast.libmc.zlibCompress
import cn.rtast.libmc.common.zlibDecompress import cn.rtast.libmc.zlibDecompress
import kotlin.test.Test import kotlin.test.Test
import kotlin.test.assertContentEquals import kotlin.test.assertContentEquals
import kotlin.test.assertEquals import kotlin.test.assertEquals
@@ -4,7 +4,7 @@
* Date: 2026/9/3 * Date: 2026/9/3
*/ */
package cn.rtast.libmc.common package cn.rtast.libmc
/** /**
* No Context for jvm targets * No Context for jvm targets
@@ -4,7 +4,7 @@
* Date: 2026/9/3 * Date: 2026/9/3
*/ */
package cn.rtast.libmc.common.stream package cn.rtast.libmc.stream
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
@@ -4,7 +4,7 @@
* Date: 2026/9/3 * Date: 2026/9/3
*/ */
package cn.rtast.libmc.common.stream package cn.rtast.libmc.stream
import java.io.EOFException import java.io.EOFException
import java.io.InputStream import java.io.InputStream
@@ -5,7 +5,7 @@
*/ */
package cn.rtast.libmc.common.stream package cn.rtast.libmc.stream
internal fun ByteArray.toShort(endian: ByteOrder = ByteOrder.BIG_ENDIAN): Short { internal fun ByteArray.toShort(endian: ByteOrder = ByteOrder.BIG_ENDIAN): Short {
val b1 = this[0].toInt() and 0xFF val b1 = this[0].toInt() and 0xFF
@@ -4,9 +4,9 @@
* Date: 2026/9/3 * Date: 2026/9/3
*/ */
package cn.rtast.libmc.common.stream package cn.rtast.libmc.stream
import cn.rtast.libmc.common.LibMCContext import cn.rtast.libmc.LibMCContext
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import java.net.DatagramPacket import java.net.DatagramPacket
@@ -4,7 +4,7 @@
* Date: 2026/9/4 * Date: 2026/9/4
*/ */
package cn.rtast.libmc.common package cn.rtast.libmc
import java.io.ByteArrayInputStream import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream import java.io.ByteArrayOutputStream
@@ -6,7 +6,7 @@
@file:Suppress("PropertyName") @file:Suppress("PropertyName")
package cn.rtast.libmc.common package cn.rtast.libmc
import io.ktor.network.selector.* import io.ktor.network.selector.*
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@@ -4,7 +4,7 @@
* Date: 2026/9/3 * Date: 2026/9/3
*/ */
package cn.rtast.libmc.common.stream package cn.rtast.libmc.stream
import io.ktor.utils.io.core.* import io.ktor.utils.io.core.*
import kotlinx.io.* import kotlinx.io.*
@@ -4,7 +4,7 @@
* Date: 2026/9/3 * Date: 2026/9/3
*/ */
package cn.rtast.libmc.common.stream package cn.rtast.libmc.stream
import io.ktor.utils.io.* import io.ktor.utils.io.*
import io.ktor.utils.io.bits.* import io.ktor.utils.io.bits.*
@@ -4,7 +4,7 @@
* Date: 2026/9/3 * Date: 2026/9/3
*/ */
package cn.rtast.libmc.common.stream package cn.rtast.libmc.stream
import cn.rtast.libmc.common.LibMCContext import cn.rtast.libmc.common.LibMCContext
import io.ktor.network.sockets.* import io.ktor.network.sockets.*
@@ -6,7 +6,7 @@
@file:OptIn(ExperimentalForeignApi::class) @file:OptIn(ExperimentalForeignApi::class)
package cn.rtast.libmc.common package cn.rtast.libmc
import kotlinx.cinterop.* import kotlinx.cinterop.*
import platform.zlib.* import platform.zlib.*
@@ -7,8 +7,8 @@
package cn.rtast.libmc.mcping.bedrock package cn.rtast.libmc.mcping.bedrock
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import kotlin.random.Random import kotlin.random.Random
private val RAKNET_MAGIC = byteArrayOf( private val RAKNET_MAGIC = byteArrayOf(
@@ -7,9 +7,9 @@
package cn.rtast.libmc.mcping.bedrock package cn.rtast.libmc.mcping.bedrock
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.stream.UdpSocket import cn.rtast.libmc.stream.UdpSocket
internal suspend fun <T : MinecraftBedrockPacket> UdpSocket.sendPacket(packet: T, codec: PacketCodec<T>): ByteArray { internal suspend fun <T : MinecraftBedrockPacket> UdpSocket.sendPacket(packet: T, codec: PacketCodec<T>): ByteArray {
@@ -8,8 +8,8 @@
package cn.rtast.libmc.mcping.bedrock package cn.rtast.libmc.mcping.bedrock
import cn.rtast.libmc.common.LibMCContext import cn.rtast.libmc.common.LibMCContext
import cn.rtast.libmc.common.stream.UdpSocket import cn.rtast.libmc.stream.UdpSocket
import cn.rtast.libmc.common.stream.wrap import cn.rtast.libmc.stream.wrap
import cn.rtast.libmc.mcping.PingResponse import cn.rtast.libmc.mcping.PingResponse
import kotlin.time.Clock import kotlin.time.Clock
@@ -7,11 +7,11 @@
package cn.rtast.libmc.mcping.java package cn.rtast.libmc.mcping.java
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.primitives.McStringCodec import cn.rtast.libmc.primitives.McStringCodec
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.VarIntCodec import cn.rtast.libmc.primitives.VarIntCodec
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
// ref https://minecraft.wiki/w/Java_Edition_protocol/Packets#Handshake // ref https://minecraft.wiki/w/Java_Edition_protocol/Packets#Handshake
internal data class HandshakePacket( internal data class HandshakePacket(
@@ -8,10 +8,10 @@
package cn.rtast.libmc.mcping.java package cn.rtast.libmc.mcping.java
import cn.rtast.libmc.common.* import cn.rtast.libmc.common.*
import cn.rtast.libmc.common.primitives.McStringCodec import cn.rtast.libmc.primitives.McStringCodec
import cn.rtast.libmc.common.primitives.VarIntCodec import cn.rtast.libmc.primitives.VarIntCodec
import cn.rtast.libmc.common.stream.Socket import cn.rtast.libmc.stream.Socket
import cn.rtast.libmc.common.stream.readPacketFrame import cn.rtast.libmc.stream.readPacketFrame
import cn.rtast.libmc.mcping.PingResponse import cn.rtast.libmc.mcping.PingResponse
import cn.rtast.libmc.mcping.sendPacket import cn.rtast.libmc.mcping.sendPacket
import kotlin.time.Clock import kotlin.time.Clock
@@ -7,12 +7,12 @@
package cn.rtast.libmc.mcping package cn.rtast.libmc.mcping
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.primitives.VarIntCodec import cn.rtast.libmc.primitives.VarIntCodec
import cn.rtast.libmc.common.stream.WriteChannel import cn.rtast.libmc.stream.WriteChannel
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.packet.writeBuffer import cn.rtast.libmc.packet.writeBuffer
public suspend fun <T : MinecraftPacket> WriteChannel.sendPacket(packet: T, packetId: Int, codec: PacketCodec<T>) { public suspend fun <T : MinecraftPacket> WriteChannel.sendPacket(packet: T, packetId: Int, codec: PacketCodec<T>) {
val bodyBuffer = BytesBuffer() val bodyBuffer = BytesBuffer()
@@ -7,8 +7,8 @@
package cn.rtast.libmc.nbt package cn.rtast.libmc.nbt
import cn.rtast.libmc.common.stream.ByteOrder import cn.rtast.libmc.stream.ByteOrder
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
public class BytesBufferNBTInput(override val order: ByteOrder, private val buffer: BytesBuffer) : NBTInput { public class BytesBufferNBTInput(override val order: ByteOrder, private val buffer: BytesBuffer) : NBTInput {
override suspend fun readByte(): Byte = buffer.readByte() override suspend fun readByte(): Byte = buffer.readByte()
@@ -7,8 +7,9 @@
package cn.rtast.libmc.nbt package cn.rtast.libmc.nbt
import cn.rtast.libmc.common.stream.ByteOrder import cn.rtast.libmc.stream.ByteOrder
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
public class BytesBufferNBTOutput( public class BytesBufferNBTOutput(
override val order: ByteOrder, override val order: ByteOrder,
@@ -7,7 +7,7 @@
package cn.rtast.libmc.nbt package cn.rtast.libmc.nbt
import cn.rtast.libmc.common.stream.ByteOrder import cn.rtast.libmc.stream.ByteOrder
public interface NBTInput { public interface NBTInput {
public val order: ByteOrder public val order: ByteOrder
@@ -7,7 +7,7 @@
package cn.rtast.libmc.nbt package cn.rtast.libmc.nbt
import cn.rtast.libmc.common.stream.ByteOrder import cn.rtast.libmc.stream.ByteOrder
public interface NBTOutput { public interface NBTOutput {
public val order: ByteOrder public val order: ByteOrder
@@ -7,10 +7,10 @@
package cn.rtast.libmc.nbt package cn.rtast.libmc.nbt
import cn.rtast.libmc.common.gzipCompress import cn.rtast.libmc.gzipCompress
import cn.rtast.libmc.common.gzipDecompress import cn.rtast.libmc.gzipDecompress
import cn.rtast.libmc.common.zlibCompress import cn.rtast.libmc.zlibCompress
import cn.rtast.libmc.common.zlibDecompress import cn.rtast.libmc.zlibDecompress
public sealed interface NbtCompressor { public sealed interface NbtCompressor {
public fun compress(input: ByteArray): ByteArray public fun compress(input: ByteArray): ByteArray
@@ -7,7 +7,7 @@
package test package test
import cn.rtast.libmc.common.stream.wrap import cn.rtast.libmc.stream.wrap
import cn.rtast.libmc.nbt.NbtReader import cn.rtast.libmc.nbt.NbtReader
import org.junit.Test import org.junit.Test
import java.io.File import java.io.File
+2 -2
View File
@@ -1,6 +1,6 @@
# libmc-protocol-encrypt # libmc-protocol-encrypt
This module implemented `ProtocolCryptoContext` and provided a `DefaultProtocolCryptoContext`. This module implemented `ProtocolContext` and provided a `DefaultProtocolContext`.
## Get started ## Get started
@@ -15,7 +15,7 @@ This module implemented `ProtocolCryptoContext` and provided a `DefaultProtocolC
fun main() { fun main() {
val cli = createMinecraftClient( val cli = createMinecraftClient(
// ... other paramater // ... other paramater
crypto = DefaultProtocolCryptoContext crypto = DefaultProtocolContext
) )
} }
``` ```
@@ -9,7 +9,7 @@
package cn.rtast.libmc.protocol.crypto package cn.rtast.libmc.protocol.crypto
import cn.rtast.libmc.common.crypto.NetworkCipher import cn.rtast.libmc.crypto.NetworkCipher
import dev.whyoleg.cryptography.DelicateCryptographyApi import dev.whyoleg.cryptography.DelicateCryptographyApi
import dev.whyoleg.cryptography.algorithms.AES import dev.whyoleg.cryptography.algorithms.AES
@@ -7,17 +7,17 @@
package cn.rtast.libmc.protocol.crypto package cn.rtast.libmc.protocol.crypto
import cn.rtast.libmc.common.crypto.AuthenticationProvider import cn.rtast.libmc.crypto.AuthenticationProvider
import cn.rtast.libmc.common.crypto.ProtocolContextBuilder import cn.rtast.libmc.crypto.ProtocolContextBuilder
import cn.rtast.libmc.common.crypto.RSA1024Encryptor import cn.rtast.libmc.crypto.RSA1024Encryptor
import cn.rtast.libmc.common.crypto.Sha1Hasher import cn.rtast.libmc.crypto.Sha1Hasher
import io.ktor.client.* import io.ktor.client.*
import io.ktor.client.request.* import io.ktor.client.request.*
import io.ktor.http.* import io.ktor.http.*
private val httpClient = HttpClient() private val httpClient = HttpClient()
public val DefaultProtocolCryptoContext: ProtocolContextBuilder.() -> Unit = { public val DefaultProtocolContext: ProtocolContextBuilder.() -> Unit = {
rsaEncryptor = RSA1024Encryptor { key, data -> rsaEncrypt(key, data) } rsaEncryptor = RSA1024Encryptor { key, data -> rsaEncrypt(key, data) }
sha1Hasher = Sha1Hasher { serverId, secretKey, publicKey -> minecraftServerIdHash(serverId, secretKey, publicKey) } sha1Hasher = Sha1Hasher { serverId, secretKey, publicKey -> minecraftServerIdHash(serverId, secretKey, publicKey) }
cipherFactory = { key -> AesCFB8Cipher(key) } cipherFactory = { key -> AesCFB8Cipher(key) }
@@ -6,10 +6,9 @@
package test package test
import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.protocol.client.createMinecraftClient import cn.rtast.libmc.protocol.client.createMinecraftClient
import cn.rtast.libmc.protocol.crypto.DefaultProtocolCryptoContext import cn.rtast.libmc.protocol.crypto.DefaultProtocolContext
import cn.rtast.libmc.protocol.packet.login.clientbound.ClientboundLoginSuccessPacket
import cn.rtast.libmc.protocol.packet.play.clientbound.ClientboundSystemChatMessagePacket
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.junit.Test import org.junit.Test
import java.io.File import java.io.File
@@ -30,10 +29,11 @@ class TestJvmClient {
Uuid.parse("bb033844-e68e-4909-a636-1a5d1821ddc4"), Uuid.parse("bb033844-e68e-4909-a636-1a5d1821ddc4"),
// null, // null,
accessToken, accessToken,
crypto = DefaultProtocolCryptoContext crypto = DefaultProtocolContext
) )
cli.on<ClientboundSystemChatMessagePacket> { println(it) } // cli.on<ClientboundSystemChatMessagePacket> { println(it) }
cli.on<ClientboundLoginSuccessPacket> { println(it) } // cli.on<ClientboundLoginSuccessPacket> { println(it) }
cli.on<MinecraftPacket> { println(it) }
cli.launch { cli.connect() } cli.launch { cli.connect() }
while (true) { while (true) {
} }
@@ -6,9 +6,9 @@
package cn.rtast.libmc.protocol.client package cn.rtast.libmc.protocol.client
import cn.rtast.libmc.common.LibMCContext import cn.rtast.libmc.LibMCContext
import cn.rtast.libmc.common.crypto.ProtocolContext import cn.rtast.libmc.crypto.ProtocolContext
import cn.rtast.libmc.common.crypto.ProtocolContextBuilder import cn.rtast.libmc.crypto.ProtocolContextBuilder
import cn.rtast.libmc.protocol.event.InternalPacketDispatcher import cn.rtast.libmc.protocol.event.InternalPacketDispatcher
import cn.rtast.libmc.protocol.event.PacketEventDispatcher import cn.rtast.libmc.protocol.event.PacketEventDispatcher
import cn.rtast.libmc.protocol.network.NetworkChannel import cn.rtast.libmc.protocol.network.NetworkChannel
@@ -38,7 +38,7 @@ public class MinecraftClient internal constructor(
internal val authProvider = cryptoContext.authProvider internal val authProvider = cryptoContext.authProvider
internal val stateMachine = ClientStateMachine() internal val stateMachine = ClientStateMachine()
internal val networkChannel = NetworkChannel( public val networkChannel: NetworkChannel = NetworkChannel(
host = host, host = host,
port = port, port = port,
context = context, context = context,
@@ -46,15 +46,12 @@ public class MinecraftClient internal constructor(
cipherProvider = cryptoContext.cipherFactory cipherProvider = cryptoContext.cipherFactory
) )
internal val session get() = networkChannel.session
private val internalPacketDispatcher = InternalPacketDispatcher(this, authProvider) private val internalPacketDispatcher = InternalPacketDispatcher(this, authProvider)
private val clientJob = SupervisorJob(parentJob) private val clientJob = SupervisorJob(parentJob)
private var listenJob: Job? = null private var listenJob: Job? = null
public val isOnlineMode: Boolean get() = accessToken != null public val isOnlineMode: Boolean get() = accessToken != null
public val transactionManager: TransactionIdManager = TransactionIdManager() public val transactionManager: TransactionIdManager = TransactionIdManager()
override val coroutineContext: CoroutineContext
get() = clientJob + ioDispatcher + CoroutineName("LibMC-MinecraftClient-$username")
public suspend fun connect(protocolVersion: Int = 776) { public suspend fun connect(protocolVersion: Int = 776) {
networkChannel.connect() networkChannel.connect()
@@ -67,13 +64,10 @@ public class MinecraftClient internal constructor(
} }
public fun setCompression(threshold: Int): Unit = networkChannel.setCompression(threshold) public fun setCompression(threshold: Int): Unit = networkChannel.setCompression(threshold)
private fun startListening() { private fun startListening() {
listenJob = launch { listenJob = launch {
try { try {
while (isActive) { while (isActive) internalPacketDispatcher.handleIncomingPackets(networkChannel.readNextPacket())
internalPacketDispatcher.handleIncomingPackets(networkChannel.readNextPacket())
}
} catch (e: Exception) { } catch (e: Exception) {
if (e is CancellationException) throw e if (e is CancellationException) throw e
if (isActive) { if (isActive) {
@@ -89,6 +83,9 @@ public class MinecraftClient internal constructor(
networkChannel.close() networkChannel.close()
clientJob.cancel() clientJob.cancel()
} }
public override val coroutineContext: CoroutineContext
get() = clientJob + ioDispatcher + CoroutineName("LibMC-MinecraftClient-$username")
} }
public fun createMinecraftClient( public fun createMinecraftClient(
@@ -7,19 +7,25 @@
package cn.rtast.libmc.protocol.event package cn.rtast.libmc.protocol.event
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.crypto.AuthenticationProvider
import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.protocol.client.MinecraftClient import cn.rtast.libmc.protocol.client.MinecraftClient
import cn.rtast.libmc.protocol.packet.configuration.clientbound.* import cn.rtast.libmc.protocol.packet.configuration.clientbound.*
import cn.rtast.libmc.protocol.packet.configuration.serverbound.* import cn.rtast.libmc.protocol.packet.configuration.serverbound.*
import cn.rtast.libmc.protocol.packet.login.clientbound.* import cn.rtast.libmc.protocol.packet.login.clientbound.ClientboundDisconnectLoginPacket
import cn.rtast.libmc.protocol.packet.login.clientbound.ClientboundHelloPacket
import cn.rtast.libmc.protocol.packet.login.clientbound.ClientboundLoginSuccessPacket
import cn.rtast.libmc.protocol.packet.login.clientbound.ClientboundSetCompressionPacket
import cn.rtast.libmc.protocol.packet.login.serverbound.ServerboundKeyPacket import cn.rtast.libmc.protocol.packet.login.serverbound.ServerboundKeyPacket
import cn.rtast.libmc.protocol.packet.login.serverbound.ServerboundLoginAcknowledgedPacket import cn.rtast.libmc.protocol.packet.login.serverbound.ServerboundLoginAcknowledgedPacket
import cn.rtast.libmc.protocol.packet.play.clientbound.* import cn.rtast.libmc.protocol.packet.play.clientbound.ClientboundDisconnectPlayPacket
import cn.rtast.libmc.protocol.packet.play.clientbound.ClientboundKeepAlivePlayPacket
import cn.rtast.libmc.protocol.packet.play.clientbound.ClientboundPingPacket
import cn.rtast.libmc.protocol.packet.play.clientbound.ClientboundStartConfigurationPacket
import cn.rtast.libmc.protocol.packet.play.serverbound.ServerboundConfigurationAcknowledgedPacket import cn.rtast.libmc.protocol.packet.play.serverbound.ServerboundConfigurationAcknowledgedPacket
import cn.rtast.libmc.protocol.packet.play.serverbound.ServerboundKeepAlivePlayPacket import cn.rtast.libmc.protocol.packet.play.serverbound.ServerboundKeepAlivePlayPacket
import cn.rtast.libmc.protocol.packet.play.serverbound.ServerboundPongPlayPacket import cn.rtast.libmc.protocol.packet.play.serverbound.ServerboundPongPlayPacket
import cn.rtast.libmc.protocol.protocol.state.ProtocolState import cn.rtast.libmc.protocol.protocol.state.ProtocolState
import cn.rtast.libmc.common.crypto.AuthenticationProvider
import cn.rtast.libmc.protocol.util.generateRandom16Bytes import cn.rtast.libmc.protocol.util.generateRandom16Bytes
public class InternalPacketDispatcher( public class InternalPacketDispatcher(
@@ -27,7 +33,6 @@ public class InternalPacketDispatcher(
private val authProvider: AuthenticationProvider, private val authProvider: AuthenticationProvider,
) { ) {
private suspend fun dispatchEvent(packet: MinecraftPacket) = client.dispatch(packet) private suspend fun dispatchEvent(packet: MinecraftPacket) = client.dispatch(packet)
public suspend fun handleIncomingPackets(packet: MinecraftPacket) { public suspend fun handleIncomingPackets(packet: MinecraftPacket) {
this.dispatchEvent(packet) this.dispatchEvent(packet)
when (packet) { when (packet) {
@@ -53,7 +58,7 @@ public class InternalPacketDispatcher(
val encryptedSecret = client.rsa1024Encryptor.encrypt(packet.publicKey, sharedSecret) val encryptedSecret = client.rsa1024Encryptor.encrypt(packet.publicKey, sharedSecret)
val encryptedVerifyToken = client.rsa1024Encryptor.encrypt(packet.publicKey, packet.verifyToken) val encryptedVerifyToken = client.rsa1024Encryptor.encrypt(packet.publicKey, packet.verifyToken)
client.networkChannel.sendPacket(ServerboundKeyPacket(encryptedSecret, encryptedVerifyToken)) client.networkChannel.sendPacket(ServerboundKeyPacket(encryptedSecret, encryptedVerifyToken))
client.session.enableEncryption(sharedSecret) client.networkChannel.session.enableEncryption(sharedSecret)
} }
// configuration // configuration
@@ -83,6 +88,7 @@ public class InternalPacketDispatcher(
client.networkChannel.sendPacket(ServerboundConfigurationAcknowledgedPacket) client.networkChannel.sendPacket(ServerboundConfigurationAcknowledgedPacket)
client.stateMachine.transitionTo(ProtocolState.CONFIGURATION) client.stateMachine.transitionTo(ProtocolState.CONFIGURATION)
} }
else -> {} else -> {}
} }
} }
@@ -7,19 +7,19 @@
package cn.rtast.libmc.protocol.event package cn.rtast.libmc.protocol.event
import cn.rtast.libmc.common.packet.PacketEvent import cn.rtast.libmc.packet.MinecraftPacket
import kotlin.reflect.KClass import kotlin.reflect.KClass
public open class PacketEventDispatcher { public open class PacketEventDispatcher {
@PublishedApi @PublishedApi
internal val eventHandlers: MutableMap<KClass<out PacketEvent>, MutableList<suspend (PacketEvent) -> Unit>> = internal val eventHandlers: MutableMap<KClass<out MinecraftPacket>, MutableList<suspend (MinecraftPacket) -> Unit>> =
mutableMapOf() mutableMapOf()
internal suspend fun dispatch(event: PacketEvent) { internal suspend fun dispatch(event: MinecraftPacket) {
eventHandlers[event::class]?.forEach { it.invoke(event) } eventHandlers[event::class]?.forEach { it.invoke(event) }
} }
public inline fun <reified T : PacketEvent> on(crossinline block: suspend (T) -> Unit) { public inline fun <reified T : MinecraftPacket> on(crossinline block: suspend (T) -> Unit) {
val handlers = eventHandlers.getOrPut(T::class) { mutableListOf() } val handlers = eventHandlers.getOrPut(T::class) { mutableListOf() }
handlers.add { event -> block(event as T) } handlers.add { event -> block(event as T) }
} }
@@ -7,13 +7,13 @@
package cn.rtast.libmc.protocol.network package cn.rtast.libmc.protocol.network
import cn.rtast.libmc.common.stream.ReadChannel import cn.rtast.libmc.crypto.NetworkCipher
import cn.rtast.libmc.common.stream.WriteChannel import cn.rtast.libmc.stream.ReadChannel
import cn.rtast.libmc.common.crypto.NetworkCipher import cn.rtast.libmc.stream.WriteChannel
internal class CipherReadChannel( internal class CipherReadChannel(
private val delegate: ReadChannel, private val delegate: ReadChannel,
private val crypto: NetworkCipher private val crypto: NetworkCipher,
) : ReadChannel() { ) : ReadChannel() {
override suspend fun readFully(out: ByteArray, start: Int, end: Int) { override suspend fun readFully(out: ByteArray, start: Int, end: Int) {
delegate.readFully(out, start, end) delegate.readFully(out, start, end)
@@ -36,7 +36,7 @@ internal class CipherReadChannel(
internal class CipherWriteChannel( internal class CipherWriteChannel(
private val delegate: WriteChannel, private val delegate: WriteChannel,
private val crypto: NetworkCipher private val crypto: NetworkCipher,
) : WriteChannel() { ) : WriteChannel() {
override suspend fun writeFully(value: ByteArray, startIndex: Int, endIndex: Int) { override suspend fun writeFully(value: ByteArray, startIndex: Int, endIndex: Int) {
val length = endIndex - startIndex val length = endIndex - startIndex
@@ -45,6 +45,7 @@ internal class CipherWriteChannel(
crypto.encrypt(encrypted, 0, length) crypto.encrypt(encrypted, 0, length)
delegate.writeFully(encrypted, 0, length) delegate.writeFully(encrypted, 0, length)
} }
override suspend fun flush() { override suspend fun flush() {
delegate.flush() delegate.flush()
} }
@@ -6,39 +6,36 @@
package cn.rtast.libmc.protocol.network package cn.rtast.libmc.protocol.network
import cn.rtast.libmc.common.* import cn.rtast.libmc.LibMCContext
import cn.rtast.libmc.common.crypto.NetworkCipher import cn.rtast.libmc.crypto.NetworkCipher
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.writeBuffer import cn.rtast.libmc.packet.writeBuffer
import cn.rtast.libmc.common.primitives.readVarInt import cn.rtast.libmc.primitives.readVarInt
import cn.rtast.libmc.common.primitives.writeVarInt import cn.rtast.libmc.primitives.writeVarInt
import cn.rtast.libmc.common.stream.BytesBuffer
import cn.rtast.libmc.common.stream.wrap
import cn.rtast.libmc.protocol.client.ClientStateMachine import cn.rtast.libmc.protocol.client.ClientStateMachine
import cn.rtast.libmc.protocol.protocol.GameProtocols import cn.rtast.libmc.protocol.protocol.GameProtocols
import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.stream.wrap
import cn.rtast.libmc.zlibCompress
import cn.rtast.libmc.zlibDecompress
import kotlin.concurrent.Volatile import kotlin.concurrent.Volatile
internal class NetworkChannel( public class NetworkChannel internal constructor(
host: String, host: String,
port: Int, port: Int,
context: LibMCContext, context: LibMCContext,
private val stateMachine: ClientStateMachine, private val stateMachine: ClientStateMachine,
cipherProvider: (ByteArray) -> NetworkCipher, cipherProvider: (ByteArray) -> NetworkCipher,
) { ) {
val session: NetworkSession = NetworkSession(host, port, context, cipherProvider) internal val session: NetworkSession = NetworkSession(host, port, context, cipherProvider)
@Volatile @Volatile
private var threshold = -1 private var threshold = -1
fun connect() { public fun connect(): Unit = session.connect()
session.connect() public fun setCompression(threshold: Int): Unit = run { this.threshold = threshold }
}
fun setCompression(threshold: Int) { public suspend fun readNextPacket(): MinecraftPacket {
this.threshold = threshold
}
suspend fun readNextPacket(): MinecraftPacket {
val packetLength = session.readVarInt() val packetLength = session.readVarInt()
val rawFrameBytes = session.readBytes(packetLength) val rawFrameBytes = session.readBytes(packetLength)
val frameBuf = rawFrameBytes.wrap() val frameBuf = rawFrameBytes.wrap()
@@ -54,7 +51,7 @@ internal class NetworkChannel(
.decodePacket(packetId, payloadBuf) .decodePacket(packetId, payloadBuf)
} }
suspend fun sendPacket(packet: MinecraftPacket) { public suspend fun sendPacket(packet: MinecraftPacket) {
val uncompressedBodyBuf = BytesBuffer() val uncompressedBodyBuf = BytesBuffer()
GameProtocols.serverboundGameProtocols GameProtocols.serverboundGameProtocols
.getRegistry(stateMachine.currentState) .getRegistry(stateMachine.currentState)
@@ -80,7 +77,5 @@ internal class NetworkChannel(
session.writeFully(frameBuffer.toByteArray()) session.writeFully(frameBuffer.toByteArray())
} }
fun close() { public fun close(): Unit = session.close()
session.close()
}
} }
@@ -6,13 +6,13 @@
package cn.rtast.libmc.protocol.network package cn.rtast.libmc.protocol.network
import cn.rtast.libmc.common.LibMCContext import cn.rtast.libmc.LibMCContext
import cn.rtast.libmc.common.stream.ReadChannel import cn.rtast.libmc.crypto.NetworkCipher
import cn.rtast.libmc.common.stream.Socket import cn.rtast.libmc.stream.ReadChannel
import cn.rtast.libmc.common.stream.WriteChannel import cn.rtast.libmc.stream.Socket
import cn.rtast.libmc.common.crypto.NetworkCipher import cn.rtast.libmc.stream.WriteChannel
internal class NetworkSession( public class NetworkSession internal constructor(
private val host: String, private val host: String,
private val port: Int, private val port: Int,
private val context: LibMCContext, private val context: LibMCContext,
@@ -20,20 +20,20 @@ internal class NetworkSession(
) { ) {
private var socket: Socket? = null private var socket: Socket? = null
var readChannel: ReadChannel? = null public var readChannel: ReadChannel? = null
private set private set
var writeChannel: WriteChannel? = null public var writeChannel: WriteChannel? = null
private set private set
fun connect() { public fun connect() {
val sk = Socket(host, port, context) val sk = Socket(host, port, context)
this.socket = sk this.socket = sk
this.readChannel = sk.openReadChannel() this.readChannel = sk.openReadChannel()
this.writeChannel = sk.openWriteChannel() this.writeChannel = sk.openWriteChannel()
} }
fun enableEncryption(sharedKey: ByteArray) { public fun enableEncryption(sharedKey: ByteArray) {
val currentRead = requireNotNull(readChannel) { "ReadChannel not connected" } val currentRead = requireNotNull(readChannel) { "ReadChannel not connected" }
val currentWrite = requireNotNull(writeChannel) { "WriteChannel not connected" } val currentWrite = requireNotNull(writeChannel) { "WriteChannel not connected" }
val cipher = cipherProvider(sharedKey) val cipher = cipherProvider(sharedKey)
@@ -41,17 +41,17 @@ internal class NetworkSession(
this.writeChannel = CipherWriteChannel(currentWrite, cipher) this.writeChannel = CipherWriteChannel(currentWrite, cipher)
} }
suspend fun readByte(): Byte { internal suspend fun readByte(): Byte {
val channel = requireNotNull(readChannel) { "ReadChannel not connected" } val channel = requireNotNull(readChannel) { "ReadChannel not connected" }
return channel.readByte() return channel.readByte()
} }
suspend fun readBytes(length: Int): ByteArray { internal suspend fun readBytes(length: Int): ByteArray {
val channel = requireNotNull(readChannel) { "ReadChannel not connected" } val channel = requireNotNull(readChannel) { "ReadChannel not connected" }
return channel.readBytes(length) return channel.readBytes(length)
} }
suspend fun readVarInt(): Int { internal suspend fun readVarInt(): Int {
var numRead = 0 var numRead = 0
var result = 0 var result = 0
var read: Byte var read: Byte
@@ -65,13 +65,13 @@ internal class NetworkSession(
return result return result
} }
suspend fun writeFully(data: ByteArray) { internal suspend fun writeFully(data: ByteArray) {
val channel = requireNotNull(writeChannel) { "WriteChannel not connected" } val channel = requireNotNull(writeChannel) { "WriteChannel not connected" }
channel.writeFully(data, 0, data.size) channel.writeFully(data, 0, data.size)
channel.flush() channel.flush()
} }
fun close() { internal fun close() {
socket?.close() socket?.close()
} }
} }
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.configuration package cn.rtast.libmc.protocol.packet.configuration
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.primitives.readMcString
import cn.rtast.libmc.common.primitives.readMcString import cn.rtast.libmc.primitives.writeMcString
import cn.rtast.libmc.common.primitives.writeMcString import cn.rtast.libmc.stream.BytesBuffer
public data class KnownPacks(val namespace: String, val id: String, val version: String) { public data class KnownPacks(val namespace: String, val id: String, val version: String) {
internal companion object Codec : PacketCodec<KnownPacks> { internal companion object Codec : PacketCodec<KnownPacks> {
@@ -7,12 +7,12 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readMcString import cn.rtast.libmc.primitives.readMcString
import cn.rtast.libmc.common.primitives.readUuid import cn.rtast.libmc.primitives.readUuid
import cn.rtast.libmc.common.primitives.readVarInt import cn.rtast.libmc.primitives.readVarInt
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.nbt.NBTCompound import cn.rtast.libmc.nbt.NBTCompound
import cn.rtast.libmc.protocol.protocol.util.readNetworkNBTCompound import cn.rtast.libmc.protocol.protocol.util.readNetworkNBTCompound
import kotlin.uuid.Uuid import kotlin.uuid.Uuid
@@ -7,9 +7,9 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
public data object ClientboundClearDialogPacket : MinecraftPacket, public data object ClientboundClearDialogPacket : MinecraftPacket,
PacketCodec<ClientboundClearDialogPacket> { PacketCodec<ClientboundClearDialogPacket> {
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readMcString import cn.rtast.libmc.primitives.readMcString
public data class ClientboundCodeOfConductPacket(val codeOfConduct: String) : MinecraftPacket { public data class ClientboundCodeOfConductPacket(val codeOfConduct: String) : MinecraftPacket {
internal companion object Codec : PacketCodec<ClientboundCodeOfConductPacket> { internal companion object Codec : PacketCodec<ClientboundCodeOfConductPacket> {
@@ -7,9 +7,9 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.nbt.NBTCompound import cn.rtast.libmc.nbt.NBTCompound
import cn.rtast.libmc.protocol.protocol.util.readNetworkNBTCompound import cn.rtast.libmc.protocol.protocol.util.readNetworkNBTCompound
@@ -7,9 +7,9 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.protocol.protocol.game.Identifier import cn.rtast.libmc.protocol.protocol.game.Identifier
import cn.rtast.libmc.protocol.protocol.game.readIdentifier import cn.rtast.libmc.protocol.protocol.game.readIdentifier
@@ -7,9 +7,9 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.protocol.protocol.game.Identifier import cn.rtast.libmc.protocol.protocol.game.Identifier
import cn.rtast.libmc.protocol.protocol.game.readIdentifier import cn.rtast.libmc.protocol.protocol.game.readIdentifier
@@ -7,12 +7,12 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readMcString import cn.rtast.libmc.primitives.readMcString
import cn.rtast.libmc.common.primitives.readVarInt import cn.rtast.libmc.primitives.readVarInt
import cn.rtast.libmc.common.primitives.writeMcString import cn.rtast.libmc.primitives.writeMcString
public data class ClientboundCustomReportDetailsPacket(val details: List<ReportDetail>) : MinecraftPacket { public data class ClientboundCustomReportDetailsPacket(val details: List<ReportDetail>) : MinecraftPacket {
public data class ReportDetail(val title: String, val description: String) { public data class ReportDetail(val title: String, val description: String) {
@@ -7,9 +7,9 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.nbt.NBTCompound import cn.rtast.libmc.nbt.NBTCompound
import cn.rtast.libmc.protocol.protocol.util.readNetworkNBTCompound import cn.rtast.libmc.protocol.protocol.util.readNetworkNBTCompound
@@ -7,9 +7,9 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
public data object ClientboundFinishConfigurationPacket : MinecraftPacket, public data object ClientboundFinishConfigurationPacket : MinecraftPacket,
PacketCodec<ClientboundFinishConfigurationPacket> { PacketCodec<ClientboundFinishConfigurationPacket> {
@@ -7,9 +7,9 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
public data class ClientboundKeepAliveConfigurationPacket(val id: Long) : MinecraftPacket { public data class ClientboundKeepAliveConfigurationPacket(val id: Long) : MinecraftPacket {
internal companion object Codec : PacketCodec<ClientboundKeepAliveConfigurationPacket> { internal companion object Codec : PacketCodec<ClientboundKeepAliveConfigurationPacket> {
@@ -7,9 +7,9 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
public data class ClientboundPingConfigurationPacket(val id: Int) : MinecraftPacket { public data class ClientboundPingConfigurationPacket(val id: Int) : MinecraftPacket {
internal companion object Codec : PacketCodec<ClientboundPingConfigurationPacket> { internal companion object Codec : PacketCodec<ClientboundPingConfigurationPacket> {
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readVarInt import cn.rtast.libmc.primitives.readVarInt
import cn.rtast.libmc.protocol.protocol.game.Identifier import cn.rtast.libmc.protocol.protocol.game.Identifier
import cn.rtast.libmc.protocol.protocol.game.readIdentifier import cn.rtast.libmc.protocol.protocol.game.readIdentifier
import cn.rtast.libmc.protocol.protocol.game.registry.RegistryEntry import cn.rtast.libmc.protocol.protocol.game.registry.RegistryEntry
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readUuid import cn.rtast.libmc.primitives.readUuid
import kotlin.uuid.Uuid import kotlin.uuid.Uuid
public data class ClientboundRemoveResourcePackPacket(val uuid: Uuid) : MinecraftPacket { public data class ClientboundRemoveResourcePackPacket(val uuid: Uuid) : MinecraftPacket {
@@ -7,9 +7,9 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
public data object ClientboundResetChatPacket : MinecraftPacket, public data object ClientboundResetChatPacket : MinecraftPacket,
PacketCodec<ClientboundResetChatPacket> { PacketCodec<ClientboundResetChatPacket> {
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readVarInt import cn.rtast.libmc.primitives.readVarInt
import cn.rtast.libmc.protocol.packet.configuration.KnownPacks import cn.rtast.libmc.protocol.packet.configuration.KnownPacks
public data class ClientboundSelectKnownPacksPacket(val knownPacks: List<KnownPacks>) : MinecraftPacket { public data class ClientboundSelectKnownPacksPacket(val knownPacks: List<KnownPacks>) : MinecraftPacket {
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readVarInt import cn.rtast.libmc.primitives.readVarInt
import cn.rtast.libmc.protocol.registry.report.ServerLink import cn.rtast.libmc.protocol.registry.report.ServerLink
public data class ClientboundServerLinksPacket(val links: List<ServerLink>) : MinecraftPacket { public data class ClientboundServerLinksPacket(val links: List<ServerLink>) : MinecraftPacket {
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readPrefixedByteArray import cn.rtast.libmc.primitives.readPrefixedByteArray
import cn.rtast.libmc.protocol.protocol.game.Identifier import cn.rtast.libmc.protocol.protocol.game.Identifier
import cn.rtast.libmc.protocol.protocol.game.readIdentifier import cn.rtast.libmc.protocol.protocol.game.readIdentifier
@@ -7,11 +7,11 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readMcString import cn.rtast.libmc.primitives.readMcString
import cn.rtast.libmc.common.primitives.readVarInt import cn.rtast.libmc.primitives.readVarInt
public data class ClientboundTransferPacket(val host: String, val port: Int) : MinecraftPacket { public data class ClientboundTransferPacket(val host: String, val port: Int) : MinecraftPacket {
internal companion object Codec : PacketCodec<ClientboundTransferPacket> { internal companion object Codec : PacketCodec<ClientboundTransferPacket> {
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readVarInt import cn.rtast.libmc.primitives.readVarInt
import cn.rtast.libmc.protocol.protocol.game.Identifier import cn.rtast.libmc.protocol.protocol.game.Identifier
import cn.rtast.libmc.protocol.protocol.game.readIdentifier import cn.rtast.libmc.protocol.protocol.game.readIdentifier
@@ -7,11 +7,11 @@
package cn.rtast.libmc.protocol.packet.configuration.clientbound package cn.rtast.libmc.protocol.packet.configuration.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readVarInt import cn.rtast.libmc.primitives.readVarInt
import cn.rtast.libmc.common.primitives.writeVarInt import cn.rtast.libmc.primitives.writeVarInt
import cn.rtast.libmc.protocol.protocol.game.Identifier import cn.rtast.libmc.protocol.protocol.game.Identifier
import cn.rtast.libmc.protocol.protocol.game.readIdentifier import cn.rtast.libmc.protocol.protocol.game.readIdentifier
import cn.rtast.libmc.protocol.protocol.game.writeIdentifier import cn.rtast.libmc.protocol.protocol.game.writeIdentifier
@@ -7,9 +7,9 @@
package cn.rtast.libmc.protocol.packet.configuration.serverbound package cn.rtast.libmc.protocol.packet.configuration.serverbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
public data object ServerboundAcceptCodeOfConductPacket : MinecraftPacket, public data object ServerboundAcceptCodeOfConductPacket : MinecraftPacket,
PacketCodec<ServerboundAcceptCodeOfConductPacket> { PacketCodec<ServerboundAcceptCodeOfConductPacket> {
@@ -7,9 +7,9 @@
package cn.rtast.libmc.protocol.packet.configuration.serverbound package cn.rtast.libmc.protocol.packet.configuration.serverbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
public data object ServerboundAckFinishConfigurationPacket : MinecraftPacket, public data object ServerboundAckFinishConfigurationPacket : MinecraftPacket,
PacketCodec<ServerboundAckFinishConfigurationPacket> { PacketCodec<ServerboundAckFinishConfigurationPacket> {
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.configuration.serverbound package cn.rtast.libmc.protocol.packet.configuration.serverbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.primitives.writeVarInt import cn.rtast.libmc.primitives.writeVarInt
import cn.rtast.libmc.protocol.protocol.game.Identifier import cn.rtast.libmc.protocol.protocol.game.Identifier
import cn.rtast.libmc.protocol.protocol.game.writeIdentifier import cn.rtast.libmc.protocol.protocol.game.writeIdentifier
@@ -7,9 +7,9 @@
package cn.rtast.libmc.protocol.packet.configuration.serverbound package cn.rtast.libmc.protocol.packet.configuration.serverbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
public data class ServerboundKeepAliveConfigurationPacket(val id: Long) : MinecraftPacket { public data class ServerboundKeepAliveConfigurationPacket(val id: Long) : MinecraftPacket {
internal companion object Codec : PacketCodec<ServerboundKeepAliveConfigurationPacket> { internal companion object Codec : PacketCodec<ServerboundKeepAliveConfigurationPacket> {
@@ -7,9 +7,9 @@
package cn.rtast.libmc.protocol.packet.configuration.serverbound package cn.rtast.libmc.protocol.packet.configuration.serverbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
public data class ServerboundPongConfigurationPacket(val id: Int) : MinecraftPacket { public data class ServerboundPongConfigurationPacket(val id: Int) : MinecraftPacket {
internal companion object Codec : PacketCodec<ServerboundPongConfigurationPacket> { internal companion object Codec : PacketCodec<ServerboundPongConfigurationPacket> {
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.configuration.serverbound package cn.rtast.libmc.protocol.packet.configuration.serverbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.primitives.writeVarInt import cn.rtast.libmc.primitives.writeVarInt
import cn.rtast.libmc.protocol.packet.configuration.KnownPacks import cn.rtast.libmc.protocol.packet.configuration.KnownPacks
public data class ServerboundSelectKnownPacksPacket(val knownPacks: List<KnownPacks>) : MinecraftPacket { public data class ServerboundSelectKnownPacksPacket(val knownPacks: List<KnownPacks>) : MinecraftPacket {
@@ -7,11 +7,11 @@
package cn.rtast.libmc.protocol.packet.handshake package cn.rtast.libmc.protocol.packet.handshake
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.primitives.writeMcString import cn.rtast.libmc.primitives.writeMcString
import cn.rtast.libmc.common.primitives.writeVarInt import cn.rtast.libmc.primitives.writeVarInt
import cn.rtast.libmc.protocol.protocol.state.HandshakeIntent import cn.rtast.libmc.protocol.protocol.state.HandshakeIntent
public data class ServerboundHandshakePacket( public data class ServerboundHandshakePacket(
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.login.clientbound package cn.rtast.libmc.protocol.packet.login.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readVarInt import cn.rtast.libmc.primitives.readVarInt
import cn.rtast.libmc.protocol.protocol.game.Identifier import cn.rtast.libmc.protocol.protocol.game.Identifier
import cn.rtast.libmc.protocol.protocol.game.readIdentifier import cn.rtast.libmc.protocol.protocol.game.readIdentifier
@@ -7,9 +7,9 @@
package cn.rtast.libmc.protocol.packet.login.clientbound package cn.rtast.libmc.protocol.packet.login.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.nbt.NBTCompound import cn.rtast.libmc.nbt.NBTCompound
import cn.rtast.libmc.protocol.protocol.util.readNetworkNBTCompound import cn.rtast.libmc.protocol.protocol.util.readNetworkNBTCompound
@@ -7,11 +7,11 @@
package cn.rtast.libmc.protocol.packet.login.clientbound package cn.rtast.libmc.protocol.packet.login.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readMcString import cn.rtast.libmc.primitives.readMcString
import cn.rtast.libmc.common.primitives.readPrefixedByteArray import cn.rtast.libmc.primitives.readPrefixedByteArray
/** /**
* ref: https://minecraft.wiki/w/Java_Edition_protocol/Packets#Encryption_Request * ref: https://minecraft.wiki/w/Java_Edition_protocol/Packets#Encryption_Request
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.login.clientbound package cn.rtast.libmc.protocol.packet.login.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readUuid import cn.rtast.libmc.primitives.readUuid
import cn.rtast.libmc.protocol.session.GameProfile import cn.rtast.libmc.protocol.session.GameProfile
import kotlin.uuid.Uuid import kotlin.uuid.Uuid
@@ -7,11 +7,11 @@
package cn.rtast.libmc.protocol.packet.login.clientbound package cn.rtast.libmc.protocol.packet.login.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readVarInt import cn.rtast.libmc.primitives.readVarInt
import cn.rtast.libmc.common.primitives.writeVarInt import cn.rtast.libmc.primitives.writeVarInt
public data class ClientboundSetCompressionPacket(val threshold: Int) : MinecraftPacket { public data class ClientboundSetCompressionPacket(val threshold: Int) : MinecraftPacket {
internal companion object Codec : PacketCodec<ClientboundSetCompressionPacket> { internal companion object Codec : PacketCodec<ClientboundSetCompressionPacket> {
@@ -7,11 +7,11 @@
package cn.rtast.libmc.protocol.packet.login.serverbound package cn.rtast.libmc.protocol.packet.login.serverbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.primitives.writeOptionalPrefixedByteArray import cn.rtast.libmc.primitives.writeOptionalPrefixedByteArray
import cn.rtast.libmc.common.primitives.writeVarInt import cn.rtast.libmc.primitives.writeVarInt
public data class ServerboundCustomQueryAnswerPacket(val messageId: Int, val data: ByteArray?) : MinecraftPacket { public data class ServerboundCustomQueryAnswerPacket(val messageId: Int, val data: ByteArray?) : MinecraftPacket {
internal companion object Codec : PacketCodec<ServerboundCustomQueryAnswerPacket> { internal companion object Codec : PacketCodec<ServerboundCustomQueryAnswerPacket> {
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.login.serverbound package cn.rtast.libmc.protocol.packet.login.serverbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.primitives.writePrefixedByteArray import cn.rtast.libmc.primitives.writePrefixedByteArray
/** /**
* ref: https://minecraft.wiki/w/Java_Edition_protocol/Encryption * ref: https://minecraft.wiki/w/Java_Edition_protocol/Encryption
@@ -7,9 +7,9 @@
package cn.rtast.libmc.protocol.packet.login.serverbound package cn.rtast.libmc.protocol.packet.login.serverbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
public data object ServerboundLoginAcknowledgedPacket : MinecraftPacket, public data object ServerboundLoginAcknowledgedPacket : MinecraftPacket,
PacketCodec<ServerboundLoginAcknowledgedPacket> { PacketCodec<ServerboundLoginAcknowledgedPacket> {
@@ -7,11 +7,11 @@
package cn.rtast.libmc.protocol.packet.login.serverbound package cn.rtast.libmc.protocol.packet.login.serverbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.writeMcString import cn.rtast.libmc.primitives.writeMcString
import cn.rtast.libmc.common.primitives.writeUuid import cn.rtast.libmc.primitives.writeUuid
import kotlin.uuid.Uuid import kotlin.uuid.Uuid
public data class ServerboundLoginStartPacket(val username: String, val playerUuid: Uuid) : MinecraftPacket { public data class ServerboundLoginStartPacket(val username: String, val playerUuid: Uuid) : MinecraftPacket {
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.play.clientbound package cn.rtast.libmc.protocol.packet.play.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readVarInt import cn.rtast.libmc.primitives.readVarInt
/** /**
* ref: https://minecraft.wiki/w/Java_Edition_protocol/Packets#Acknowledge_Block_Change * ref: https://minecraft.wiki/w/Java_Edition_protocol/Packets#Acknowledge_Block_Change
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.play.clientbound package cn.rtast.libmc.protocol.packet.play.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readVarInt import cn.rtast.libmc.primitives.readVarInt
import cn.rtast.libmc.protocol.protocol.game.StatisticsEntry import cn.rtast.libmc.protocol.protocol.game.StatisticsEntry
/** /**
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.play.clientbound package cn.rtast.libmc.protocol.packet.play.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readVarInt import cn.rtast.libmc.primitives.readVarInt
import cn.rtast.libmc.protocol.protocol.game.block.BlockDestroyStage import cn.rtast.libmc.protocol.protocol.game.block.BlockDestroyStage
import cn.rtast.libmc.protocol.protocol.game.block.BlockPos 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.block.readBlockPos
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.play.clientbound package cn.rtast.libmc.protocol.packet.play.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readVarInt import cn.rtast.libmc.primitives.readVarInt
import cn.rtast.libmc.nbt.NBTCompound import cn.rtast.libmc.nbt.NBTCompound
import cn.rtast.libmc.protocol.protocol.game.block.BlockPos 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.block.readBlockPos
@@ -7,10 +7,10 @@
package cn.rtast.libmc.protocol.packet.play.clientbound package cn.rtast.libmc.protocol.packet.play.clientbound
import cn.rtast.libmc.common.stream.BytesBuffer import cn.rtast.libmc.stream.BytesBuffer
import cn.rtast.libmc.common.packet.MinecraftPacket import cn.rtast.libmc.packet.MinecraftPacket
import cn.rtast.libmc.common.packet.PacketCodec import cn.rtast.libmc.packet.PacketCodec
import cn.rtast.libmc.common.primitives.readVarInt import cn.rtast.libmc.primitives.readVarInt
import cn.rtast.libmc.protocol.protocol.game.block.BlockPos 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.block.readBlockPos
Loaded 100 of 290 files, more files were not shown because too many files have changed in this diff. Show more