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.ForgeRegistries
import net.minecraftforge.registries.ForgeRegistry import net.minecraftforge.registries.ForgeRegistry
import net.minecraftforge.registries.IForgeRegistry import net.minecraftforge.registries.IForgeRegistry
import ru.dbotthepony.mc.otm.core.util.readInt
import java.io.InputStream import java.io.InputStream
import java.io.OutputStream
import java.lang.ref.Reference import java.lang.ref.Reference
import java.lang.ref.WeakReference
import java.math.BigInteger import java.math.BigInteger
import java.util.Arrays import java.util.Arrays
import java.util.Spliterators import java.util.Spliterators

View File

@ -19,6 +19,14 @@ 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 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.io.*
import java.math.BigDecimal import java.math.BigDecimal
import java.math.BigInteger 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 { fun InputStream.readNbt(accounter: NbtAccounter = NbtAccounter(1L shl 18 /* 256 KiB */)): CompoundTag {
return try { return try {
NbtIo.read(if (this is DataInputStream) this else DataInputStream(this), accounter) 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 { fun InputStream.readItem(sizeLimit: NbtAccounter = NbtAccounter(1L shl 18 /* 256 KiB */)): ItemStack {
sizeLimit.accountBytes(1L) sizeLimit.accountBytes(1L)
@ -96,7 +121,7 @@ fun OutputStream.writeBigDecimal(value: BigDecimal) {
fun InputStream.readBigDecimal(sizeLimit: NbtAccounter = NbtAccounter(512L)): BigDecimal { fun InputStream.readBigDecimal(sizeLimit: NbtAccounter = NbtAccounter(512L)): BigDecimal {
val scale = readInt() val scale = readInt()
val size = readVarIntLE(sizeLimit) val size = readVarIntLE()
require(size >= 0) { "Negative payload size: $size" } require(size >= 0) { "Negative payload size: $size" }
sizeLimit.accountBytes(size.toLong() + 4L) sizeLimit.accountBytes(size.toLong() + 4L)
val bytes = ByteArray(size) val bytes = ByteArray(size)
@ -198,10 +223,10 @@ fun InputStream.readJson(sizeLimit: NbtAccounter = NbtAccounter(1L shl 18 /* 256
sizeLimit.accountBytes(1L) sizeLimit.accountBytes(1L)
JsonPrimitive(read() > 1) JsonPrimitive(read() > 1)
} }
TYPE_INT -> JsonPrimitive(fixSignedInt(readVarLongLE(sizeLimit))) TYPE_INT -> JsonPrimitive(fixSignedInt(readVarLongLE()))
TYPE_STRING -> JsonPrimitive(readBinaryString(sizeLimit)) TYPE_STRING -> JsonPrimitive(readBinaryString(sizeLimit))
TYPE_ARRAY -> { TYPE_ARRAY -> {
val values = readVarIntLE(sizeLimit) val values = readVarIntLE()
if (values == 0) return JsonArray() if (values == 0) return JsonArray()
if (values < 0) throw JsonSyntaxException("Tried to read json array with $values elements in it") 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 return build
} }
TYPE_OBJECT -> { TYPE_OBJECT -> {
val values = readVarIntLE(sizeLimit) val values = readVarIntLE()
if (values == 0) return JsonObject() if (values == 0) return JsonObject()
if (values < 0) throw JsonSyntaxException("Tried to read json object with $values elements in it") 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 net.minecraft.network.FriendlyByteBuf
import ru.dbotthepony.mc.otm.core.Decimal import ru.dbotthepony.mc.otm.core.Decimal
import ru.dbotthepony.mc.otm.core.readDecimal 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.writeDecimal
import ru.dbotthepony.mc.otm.core.util.readDouble import ru.dbotthepony.mc.otm.core.writeDouble
import ru.dbotthepony.mc.otm.core.util.writeDouble
import java.io.InputStream import java.io.InputStream
import java.io.OutputStream import java.io.OutputStream