Class NetworkBufferTemplate

java.lang.Object
net.minestom.server.network.NetworkBufferTemplate

public final class NetworkBufferTemplate extends Object
A utility class to create NetworkBuffer.Type templates useful for serializing and deserializing objects and ensure the same type written is the same type read.
record MyClass(int id, String name) {
        // Using the template utility:
        public static final NetworkBuffer.Type<MyClass> SERIALIZER = NetworkBufferTemplate.template(
                NetworkBuffer.INT, MyClass::id,
                NetworkBuffer.STRING, MyClass::name,
                MyClass::new
        );
        // Compared to writing a custom serializer:
        public static final NetworkBuffer.Type<MyClass> SERIALIZER = new NetworkBufferTypeImpl<>() {
            @Override
            public void write(NetworkBuffer buffer, MyClass value) {
                buffer.write(NetworkBuffer.INT, value.id());
                buffer.write(NetworkBuffer.STRING, value.name());
            }

            @Override
            public MyClass read(NetworkBuffer buffer) {
                return new MyClass(
                        buffer.read(NetworkBuffer.INT),
                        buffer.read(NetworkBuffer.STRING)
                );
            }
        };
}