Implemented 0x12-ClientboundContainerSetContentPacket, 0x14-ClientboundContainerSetSlotPacket, implemented slot data codec

This commit is contained in:
2026-09-11 01:19:59 +08:00
parent 7c22cdd158
commit 59189d2fad
69 files changed
+3146 -67

No files matched your search

@@ -9,17 +9,8 @@ package cn.rtast.libmc.primitives
import cn.rtast.libmc.network.BytesBuffer
public inline fun <T> BytesBuffer.readOptional(block: BytesBuffer.() -> T): T? {
val hasData = this.readBoolean()
return if (hasData) block.invoke(this) else null
}
public inline fun <T> BytesBuffer.readOptional(condition: Boolean, block: BytesBuffer.() -> T): T? =
if (condition) block() else null
/**
* buffer.writeOptional(value.someValue) { writeBlockPos(it) }
*/
public inline fun <T> BytesBuffer.writeOptional(value: T?, block: BytesBuffer.(T) -> Unit) {
if (value != null) {
this.writeBoolean(true)
block.invoke(this, value)
} else this.writeBoolean(false)
}
public inline fun <T> BytesBuffer.writeOptional(value: T?, block: BytesBuffer.(T) -> Unit): Unit =
if (value != null) block.invoke(this, value) else Unit
@@ -44,10 +44,7 @@ public fun BytesBuffer.writePrefixedStringArray(value: List<String>) {
public inline fun <T> BytesBuffer.readPrefixed(reader: BytesBuffer.() -> T): List<T> {
val count = this.readVarInt()
require(count in 0..4096) {
"Prefixed array count $count is invalid (expected 0..4096). " +
"Stream offset is corrupted. Check Heightmaps/NBT encoding."
}
require(count in 0..4096)
val list = ArrayList<T>(count)
repeat(count) { _ -> list.add(this.reader()) }
return list