Разбиение на страницы
Совет
Для понимания основ, прочитайте сначала Сервисы.
The PaginationService acts as a way to split up content into discrete pages. The service provides a PaginationList.Builder with which you can specify attributes such as title, contents, header, and padding. This is a Sponge-specific feature.
Строитель разделителя страниц
Сначала получите экземпляр PaginationList.Builder
:
import org.spongepowered.api.service.pagination.PaginationList;
PaginationList.Builder builder = PaginationList.builder();
Существует два разных способа указать содержимое нумерованного списка:
With an
Iterable<Component>
import net.kyori.adventure.text.Component; import java.util.ArrayList; import java.util.List; List<Component> contents = new ArrayList<>(); contents.add(Component.text("Item 1")); contents.add(Component.text("Item 2")); contents.add(Component.text("Item 3")); builder.contents(contents);Примечание
Если
Iterable
являетсяList
, то поддерживается двунаправленная навигация. В противном случае поддерживается только навигация вперед.
With an array of
Component
s
builder.contents(Component.text("Item 1"), Component.text("Item 2"), Component.text("Item 3"));
Вы также можете указать различные другие компоненты разбитого на страницы списка, такие как название, заголовок, нижний колонтитул и отступы. На приведенном ниже примере показано, какой компонент отображается в каждой части разбитого списка. В данном примере строка заполняется буквой p.
pppppppppppppppppppppppp Title pppppppppppppppppppppppp
Header
Item 1
Item 2
Item 3
...
ppppppppppppppppppppppp < 2/3 > ppppppppppppppppppppppp
Footer
Для достижения предыдущего примера, вы можете использовать следующий шаблон билдера:
builder.title(Component.text("Title"))
.contents(Component.text("Item 1"), Component.text("Item 2"), Component.text("Item 3"))
.header(Component.text("Header"))
.footer(Component.text("Footer"))
.padding(Component.text("p"));
Примечание
Все компоненты разбитого списка, за исключением содержимого, являются необязательными. Тем не менее, название настоятельно рекомендуется.
Finally, to send the paginated list to a player or another Audience-like object, use PaginationList.Builder#sendTo(Audience).
And that’s it! To recap, a fully functional paginated list could be generated and sent to a previously defined
msgReceiver
using the following code:
PaginationList.builder()
.title(Component.text("Title"))
.contents(Component.text("Item 1"), Component.text("Item 2"), Component.text("Item 3"))
.header(Component.text("Header"))
.footer(Component.text("Footer"))
.padding(Component.text("p"))
.sendTo(msgReceiver);