From 9fe8d1734ec5d3123b19112bbdb2d211bc561813 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sat, 15 Jul 2023 19:39:38 +0700 Subject: [PATCH] Add RGBAColor stream codecs --- .../ru/dbotthepony/mc/otm/core/util/DataStreams.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/DataStreams.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/DataStreams.kt index c0a32fee9..d08146816 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/DataStreams.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/DataStreams.kt @@ -9,6 +9,7 @@ import net.minecraft.nbt.NbtAccounter import net.minecraft.world.item.ItemStack import net.minecraftforge.fluids.FluidStack import ru.dbotthepony.mc.otm.core.immutableMap +import ru.dbotthepony.mc.otm.core.math.RGBAColor import ru.dbotthepony.mc.otm.core.math.readDecimal import ru.dbotthepony.mc.otm.core.math.writeDecimal import ru.dbotthepony.mc.otm.core.readItemType @@ -122,6 +123,14 @@ val VarIntValueCodec = StreamCodec(DataInputStream::readVarIntLE, DataOutputStre val VarLongValueCodec = StreamCodec(DataInputStream::readVarLongLE, DataOutputStream::writeVarLongLE) { a, b -> a == b } val BinaryStringCodec = StreamCodec(DataInputStream::readBinaryString, DataOutputStream::writeBinaryString) +val RGBCodec: StreamCodec = StreamCodec( + { s, a -> a.accountBytes(12L); RGBAColor(s.readFloat(), s.readFloat(), s.readFloat()) }, + { s, v -> s.writeFloat(v.red); s.writeFloat(v.green); s.writeFloat(v.blue) }) + +val RGBACodec: StreamCodec = StreamCodec( + { s, a -> a.accountBytes(16L); RGBAColor(s.readFloat(), s.readFloat(), s.readFloat(), s.readFloat()) }, + { s, v -> s.writeFloat(v.red); s.writeFloat(v.green); s.writeFloat(v.blue); s.writeFloat(v.alpha) }) + class EnumValueCodec>(clazz: Class) : IStreamCodec, Codec { val clazz = searchClass(clazz) val values: ImmutableList = ImmutableList.copyOf(this.clazz.enumConstants!!)