A BookView is the representation of the Book GUI on the client. The BookView is not associated with an actual ItemStack and is only for displaying Component through a book to the player. Note that a BookView is read-only, due to it being impossible to tell the client to open an unsigned book.

Um eine BookView zu erstellen, müssen wir einfach einen BookView.Builder holen, der von der BookView#builder() Methode bereitgestellt wird. Mit Hilfe des Builders, können wir den Titel, den Autor und die Seiten für die BookView angeben. Anschließend können wir die Ansicht an einen Viewer schicken. Ein Beispiel hierfür könnte wie folgt aussehen:

import net.kyori.adventure.text.Component;
import org.spongepowered.api.effect.Viewer;
import org.spongepowered.api.text.BookView;

BookView bookView = BookView.builder()
        .title(Component.text("Story Mode"))
        .addPage(Component.text("There once was a Steve..."))

This will display a book to the client with a single page that contains the text specified in the BookView.Builder#addPage(Component) method. Of course, you don’t have to call addPage(Component) for every page you wish to add. The BookView.Builder class provides a BookView.Builder#addPages(Collection<Component>) method that accepts multiple Components.

The BookView.Builder class also provides the BookView.Builder#insertPage(int, Component) and the corresponding BookView.Builder#insertPages(int, Collection<Component>) methods for inserting a page or several pages at any given index.

You may also remove pages of a BookView by providing either the Component from the page or by specifying the index of the page that you wish to remove. You simply need to use the corresponding BookView.Builder#removePage(Component), BookView.Builder#removePage(int), or BookView.Builder#removePages(Collection<Component>) methods.