Payload may not be larger than 1048576 bytes

This commit is contained in:
DBotThePony 2023-03-03 08:05:41 +07:00
parent 6fa598d5fc
commit 289c3642d5
Signed by: DBot
GPG Key ID: DCC23B5715498507
2 changed files with 21 additions and 3 deletions

View File

@ -14,11 +14,11 @@ import net.minecraft.nbt.CompoundTag
import net.minecraft.nbt.NbtAccounter import net.minecraft.nbt.NbtAccounter
import net.minecraft.nbt.NbtIo import net.minecraft.nbt.NbtIo
import net.minecraft.network.FriendlyByteBuf import net.minecraft.network.FriendlyByteBuf
import net.minecraft.network.chat.Component
import net.minecraft.world.item.Item import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack import net.minecraft.world.item.ItemStack
import net.minecraftforge.registries.ForgeRegistries import net.minecraftforge.registries.ForgeRegistries
import net.minecraftforge.registries.ForgeRegistry import net.minecraftforge.registries.ForgeRegistry
import org.apache.commons.lang3.mutable.MutableInt
import java.io.* import java.io.*
import java.math.BigDecimal import java.math.BigDecimal
import java.math.BigInteger import java.math.BigInteger
@ -239,6 +239,14 @@ fun InputStream.readJson(sizeLimit: NbtAccounter = NbtAccounter(1L shl 18 /* 256
} }
} }
fun InputStream.readBinaryComponent(): Component? {
return Component.Serializer.fromJson(readJson())
}
fun OutputStream.writeBinaryComponent(component: Component) {
writeJson(Component.Serializer.toJsonTree(component))
}
fun FriendlyByteBuf.readJson(sizeLimit: NbtAccounter = NbtAccounter(1L shl 18)): JsonElement { fun FriendlyByteBuf.readJson(sizeLimit: NbtAccounter = NbtAccounter(1L shl 18)): JsonElement {
return ByteBufInputStream(this).readJson(sizeLimit) return ByteBufInputStream(this).readJson(sizeLimit)
} }
@ -246,3 +254,11 @@ fun FriendlyByteBuf.readJson(sizeLimit: NbtAccounter = NbtAccounter(1L shl 18)):
fun FriendlyByteBuf.writeJson(value: JsonElement) { fun FriendlyByteBuf.writeJson(value: JsonElement) {
ByteBufOutputStream(this).writeJson(value) ByteBufOutputStream(this).writeJson(value)
} }
fun FriendlyByteBuf.readBinaryComponent(): Component {
return Component.Serializer.fromJson(readJson()) ?: throw NullPointerException("Received null component")
}
fun FriendlyByteBuf.writeBinaryComponent(component: Component) {
writeJson(Component.Serializer.toJsonTree(component))
}

View File

@ -77,6 +77,8 @@ import ru.dbotthepony.mc.otm.core.orNull
import ru.dbotthepony.mc.otm.core.readItemType import ru.dbotthepony.mc.otm.core.readItemType
import ru.dbotthepony.mc.otm.core.registryName import ru.dbotthepony.mc.otm.core.registryName
import ru.dbotthepony.mc.otm.core.stream import ru.dbotthepony.mc.otm.core.stream
import ru.dbotthepony.mc.otm.core.util.readBinaryComponent
import ru.dbotthepony.mc.otm.core.util.writeBinaryComponent
import ru.dbotthepony.mc.otm.core.writeItemType import ru.dbotthepony.mc.otm.core.writeItemType
import ru.dbotthepony.mc.otm.milliTime import ru.dbotthepony.mc.otm.milliTime
import ru.dbotthepony.mc.otm.network.MatteryPacket import ru.dbotthepony.mc.otm.network.MatteryPacket
@ -1399,7 +1401,7 @@ object MatterManager {
val result = SyncPacket( val result = SyncPacket(
buff.readMap(FriendlyByteBuf::readItemType, FriendlyByteBuf::readMatterValue), buff.readMap(FriendlyByteBuf::readItemType, FriendlyByteBuf::readMatterValue),
buff.readMap(FriendlyByteBuf::readItemType) { self -> self.readCollection(::ArrayList, FriendlyByteBuf::readComponent) } buff.readMap(FriendlyByteBuf::readItemType) { self -> self.readCollection(::ArrayList, FriendlyByteBuf::readBinaryComponent) }
) )
LOGGER.debug("Reading matter registry packet took ${time.millis}ms") LOGGER.debug("Reading matter registry packet took ${time.millis}ms")
@ -1414,7 +1416,7 @@ object MatterManager {
override fun write(buff: FriendlyByteBuf) { override fun write(buff: FriendlyByteBuf) {
val time = SystemTime() val time = SystemTime()
buff.writeMap(values, FriendlyByteBuf::writeItemType, FriendlyByteBuf::writeMatterValue) buff.writeMap(values, FriendlyByteBuf::writeItemType, FriendlyByteBuf::writeMatterValue)
buff.writeMap(comments, FriendlyByteBuf::writeItemType) { self, value -> self.writeCollection(value, FriendlyByteBuf::writeComponent) } buff.writeMap(comments, FriendlyByteBuf::writeItemType) { self, value -> self.writeCollection(value, FriendlyByteBuf::writeBinaryComponent) }
LOGGER.debug("Encoding matter registry packet took ${time.millis}ms, written total ${buff.writerIndex() - 1} bytes") LOGGER.debug("Encoding matter registry packet took ${time.millis}ms, written total ${buff.writerIndex() - 1} bytes")
} }