書本閱覽
BookView 用于表示客户端中的一本成书的 GUI 界面。 BookView
并不和一个实际的 ItemStack 相关联,而是只用于以一本成书的方式向玩家展示预先准备好的 Component 。需要注意 BookView
是只读的,因为不可能告诉客户端打开一本未签名的书。
要创建一个 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);
这将在客户端显示一本包含有一页通过 BookView.Builder#addPage(Component) 方法指定的文本的书。当然,你其实并不需要为每一页调用 addPage(Component)
方法。 BookView.Builder
类实现了 BookView.Builder#addPages(Collection<Component>) 方法用于添加多个 Component
。
BookView.Builder
类还提供了 BookView.Builder#insertPage(int, Component) 和相应的 BookView.Builder#insertPages(int, Collection<Component>) 两个方法,用于在任何给定的索引处插入一页或几页。
你还可以通过指定从页面提供的 Component
或指定要删除的页面的索引来删除 BookView
的页面。你只需要使用对应的 BookView.Builder#removePage(Component) 、 BookView.Builder#removePage(int) 、或者 BookView.Builder#removePages(Collection<Component>) 方法。