El Servicio de Paginación
Truco
Para un entendimiento básico del los servicios, asegúrese de leer primero Servicios.
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.
Generador de Lista de Paginación
Primero obtenga una instancia de una PaginationList.Builder
:
import org.spongepowered.api.service.pagination.PaginationList;
PaginationList.Builder builder = PaginationList.builder();
Hay dos maneras diferentes de especificar el contenido de la lista paginada:
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);Nota
Si el
Iterable
es unaLista
, es aceptada la navegación bidireccional. De lo contrario, solo es aceptada la navegación hacia adelante.
With an array of
Component
s
builder.contents(Component.text("Item 1"), Component.text("Item 2"), Component.text("Item 3"));
Puede también especificar varios otros componentes de una lista paginada, como un título, encabezado, pie de página y relleno. El diagrama a continuación muestra como el componente es presentado en cada parte de la lista paginada. En el siguiente diagrama, la cadena de relleno se muestra como la letra p.
pppppppppppppppppppppppp Title pppppppppppppppppppppppp
Header
Item 1
Item 2
Item 3
...
ppppppppppppppppppppppp < 2/3 > ppppppppppppppppppppppp
Footer
Para conseguir la salida anterior, podemos utilizar el siguiente patrón generador:
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"));
Nota
Con la excepción de los contenidos, todos los componentes de la lista paginada son opcionales. Sin embargo, un título es fuertemente recomendado.
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);