Resolve conflicts between 1.19.3 code and 1.19.2 code

This commit is contained in:
DBotThePony 2023-05-02 23:30:34 +07:00
parent 275e340243
commit 006cbc75e3
Signed by: DBot
GPG Key ID: DCC23B5715498507
3 changed files with 31 additions and 9 deletions

View File

@ -28,11 +28,8 @@ import net.minecraftforge.items.IItemHandler
import net.minecraftforge.registries.ForgeRegistries
import net.minecraftforge.registries.ForgeRegistry
import net.minecraftforge.registries.IForgeRegistry
import ru.dbotthepony.mc.otm.core.util.readInt
import java.io.InputStream
import java.io.OutputStream
import java.lang.ref.Reference
import java.lang.ref.WeakReference
import java.math.BigInteger
import java.util.Arrays
import java.util.Spliterators

View File

@ -19,6 +19,14 @@ import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.minecraftforge.registries.ForgeRegistries
import net.minecraftforge.registries.ForgeRegistry
import ru.dbotthepony.mc.otm.core.readDouble
import ru.dbotthepony.mc.otm.core.readInt
import ru.dbotthepony.mc.otm.core.readVarIntLE
import ru.dbotthepony.mc.otm.core.readVarLongLE
import ru.dbotthepony.mc.otm.core.writeDouble
import ru.dbotthepony.mc.otm.core.writeInt
import ru.dbotthepony.mc.otm.core.writeVarIntLE
import ru.dbotthepony.mc.otm.core.writeVarLongLE
import java.io.*
import java.math.BigDecimal
import java.math.BigInteger
@ -37,6 +45,21 @@ fun OutputStream.writeNbt(value: CompoundTag) {
}
}
fun InputStream.readBinaryString(sizeLimit: NbtAccounter = NbtAccounter(1L shl 18 /* 256 KiB */)): String {
val size = readVarIntLE()
require(size >= 0) { "Negative payload size: $size" }
sizeLimit.accountBytes(size.toLong())
val bytes = ByteArray(size)
read(bytes)
return bytes.decodeToString()
}
fun OutputStream.writeBinaryString(input: String) {
val bytes = input.encodeToByteArray()
writeVarIntLE(bytes.size)
write(bytes)
}
fun InputStream.readNbt(accounter: NbtAccounter = NbtAccounter(1L shl 18 /* 256 KiB */)): CompoundTag {
return try {
NbtIo.read(if (this is DataInputStream) this else DataInputStream(this), accounter)
@ -69,6 +92,8 @@ fun OutputStream.writeItem(itemStack: ItemStack, limitedTag: Boolean = true) {
}
}
private fun NbtAccounter.accountBytes(bytes: Long) = accountBits(bytes * 8L)
fun InputStream.readItem(sizeLimit: NbtAccounter = NbtAccounter(1L shl 18 /* 256 KiB */)): ItemStack {
sizeLimit.accountBytes(1L)
@ -96,7 +121,7 @@ fun OutputStream.writeBigDecimal(value: BigDecimal) {
fun InputStream.readBigDecimal(sizeLimit: NbtAccounter = NbtAccounter(512L)): BigDecimal {
val scale = readInt()
val size = readVarIntLE(sizeLimit)
val size = readVarIntLE()
require(size >= 0) { "Negative payload size: $size" }
sizeLimit.accountBytes(size.toLong() + 4L)
val bytes = ByteArray(size)
@ -198,10 +223,10 @@ fun InputStream.readJson(sizeLimit: NbtAccounter = NbtAccounter(1L shl 18 /* 256
sizeLimit.accountBytes(1L)
JsonPrimitive(read() > 1)
}
TYPE_INT -> JsonPrimitive(fixSignedInt(readVarLongLE(sizeLimit)))
TYPE_INT -> JsonPrimitive(fixSignedInt(readVarLongLE()))
TYPE_STRING -> JsonPrimitive(readBinaryString(sizeLimit))
TYPE_ARRAY -> {
val values = readVarIntLE(sizeLimit)
val values = readVarIntLE()
if (values == 0) return JsonArray()
if (values < 0) throw JsonSyntaxException("Tried to read json array with $values elements in it")
@ -211,7 +236,7 @@ fun InputStream.readJson(sizeLimit: NbtAccounter = NbtAccounter(1L shl 18 /* 256
return build
}
TYPE_OBJECT -> {
val values = readVarIntLE(sizeLimit)
val values = readVarIntLE()
if (values == 0) return JsonObject()
if (values < 0) throw JsonSyntaxException("Tried to read json object with $values elements in it")

View File

@ -3,9 +3,9 @@ package ru.dbotthepony.mc.otm.matter
import net.minecraft.network.FriendlyByteBuf
import ru.dbotthepony.mc.otm.core.Decimal
import ru.dbotthepony.mc.otm.core.readDecimal
import ru.dbotthepony.mc.otm.core.readDouble
import ru.dbotthepony.mc.otm.core.writeDecimal
import ru.dbotthepony.mc.otm.core.util.readDouble
import ru.dbotthepony.mc.otm.core.util.writeDouble
import ru.dbotthepony.mc.otm.core.writeDouble
import java.io.InputStream
import java.io.OutputStream