fn parse_optional_field<T>( compound: &NbtCompound, key: &str, parser: impl FnOnce(&NbtTag) -> Option<T>, ) -> Result<Option<T>, ()>