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.NbtIo
import net.minecraft.network.FriendlyByteBuf
import net.minecraft.network.chat.Component
import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.minecraftforge.registries.ForgeRegistries
import net.minecraftforge.registries.ForgeRegistry
import org.apache.commons.lang3.mutable.MutableInt
import java.io.*
import java.math.BigDecimal
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 {
return ByteBufInputStream(this).readJson(sizeLimit)
}
@ -246,3 +254,11 @@ fun FriendlyByteBuf.readJson(sizeLimit: NbtAccounter = NbtAccounter(1L shl 18)):
fun FriendlyByteBuf.writeJson(value: JsonElement) {
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.registryName
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.milliTime
import ru.dbotthepony.mc.otm.network.MatteryPacket
@ -1399,7 +1401,7 @@ object MatterManager {
val result = SyncPacket(
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")
@ -1414,7 +1416,7 @@ object MatterManager {
override fun write(buff: FriendlyByteBuf) {
val time = SystemTime()
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")
}