FriendlyByteBufs are essentially a byte array of zero or more bytes to sync information across a network. It works similarly to a queue: the information is written in to a specific order and read in the order it was written.
In most cases, one will use a premade
FriendlyByteBuf passed in from some network. Most of the time this is a heap buffer of some sort; however, understanding how it works is best left as an explanation of data structures.
When you are writing to a
FriendlyByteBuf, you are calling one of the many write functions to store information as bytes (e.g.
writeVarInt). There are a couple of helpers for objects like
ItemStacks, etc. if they are needed.
When you are reading from a
FriendlyByteBuf, you are calling the equivalent read function in the same order. For example, if you call
writeBlockPos and then
writeVarInt, you would call
readBlockPos and then
readVarInt in that order. Each of these method returns the value from the buffer.