From 2b48a19c84f515175e8447795e4613a520494b91 Mon Sep 17 00:00:00 2001 From: TwistedAsylumMC Date: Sun, 19 Nov 2023 12:26:53 +0000 Subject: [PATCH] protocol/io.go: New OptionalFuncIO() method --- minecraft/protocol/io.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/minecraft/protocol/io.go b/minecraft/protocol/io.go index c539e9bb..70fd51f1 100644 --- a/minecraft/protocol/io.go +++ b/minecraft/protocol/io.go @@ -214,6 +214,15 @@ func OptionalFunc[T any](r IO, x *Optional[T], f func(*T)) any { return x } +// OptionalFuncIO reads/writes an Optional[T]. +func OptionalFuncIO[T any](r IO, x *Optional[T], f func(IO, *T)) any { + r.Bool(&x.set) + if x.set { + f(r, &x.val) + } + return x +} + // OptionalMarshaler reads/writes an Optional assuming *T implements Marshaler. func OptionalMarshaler[T any, A PtrMarshaler[T]](r IO, x *Optional[T]) { r.Bool(&x.set)