Layanan Paginasi

Tip

Untuk dasar pengertian dari layanan, pastikan pertama anda membaca :doc:'../services'.

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.

Pagination Pembangun Daftar

Memperoleh turunan pertama dari sebuah "PaginationList.Builder":

import org.spongepowered.api.service.pagination.PaginationList;

PaginationList.Builder builder = PaginationList.builder();

Ada dua cara yang berbeda untuk menentukan konten dari daftar yang diberi halaman:

  • 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);

Catatan

Jika "Iterable" adalah sebuah "List", kemudian navigasi dua arah didukung. Jika tidak, hanya akan meneruskan navigasi yang didukung.

  • With an array of Components

builder.contents(Component.text("Item 1"), Component.text("Item 2"), Component.text("Item 3"));

Anda juga dapat menentukan berbagai komponen lain dari daftar paginasi, seperti judul, header, footer, dan padding. Diagram di bawah ini menunjukkan komponen yang ditampilkan di masing-masing bagian dari daftar paginasi. Dalam diagram berikut, padding string ditampilkan sebagai huruf p.

pppppppppppppppppppppppp Title pppppppppppppppppppppppp
Header
Item 1
Item 2
Item 3
...
ppppppppppppppppppppppp < 2/3 > ppppppppppppppppppppppp
Footer

Untuk mencapai output sebelumnya, kita bisa menggunakan pola pembangun berikut ini:

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"));

Catatan

Dengan pengecualian isi, semua komponen dari daftar yang diberi halaman adalah opsional. Namun, Judul sangat direkomendasikan.

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);