Implemented 0x12-ClientboundContainerSetContentPacket, 0x14-ClientboundContainerSetSlotPacket, implemented slot data codec
This commit is contained in:
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
|
||||
|
||||
Reference in New Issue
Block a user