書本閱覽

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.

要创建一个 BookView ,我们只需要通过 BookView#builder() 方法获取一个 BookView.Builder 。然后我们可以指定标题,作者和 BookView 的每一页。接着我们必须将其发送至 Viewer 。具体代码如下所示:

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"))
        .author(Component.text("Notch"))
        .addPage(Component.text("There once was a Steve..."))
        .build();
viewer.sendBookView(bookView);

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.