Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 80 additions & 20 deletions astro.config.ts

Large diffs are not rendered by default.

127 changes: 127 additions & 0 deletions src/content/docs/es/adventure/audiences.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
---
title: Audiencias
slug: es/adventure/audiences
description: Guía sobre las audiencias de Adventure.
---

En esencia, una audiencia es un grupo de cero o más destinatarios de cierto contenido.
El concepto de audiencia es la diferencia más clara entre Adventure y otras plataformas de Minecraft.

Como API, `Audience` está diseñada como una interfaz universal para cualquier jugador,
emisor de comandos, consola u otro destinatario que pueda recibir texto, títulos, barras de jefe
y otros medios de Minecraft. Esto permite ampliar las audiencias para que incluyan a más de
un destinatario individual: una «audiencia» podría ser un equipo, servidor,
mundo o todos los jugadores que cumplan una condición (por ejemplo, tener cierto
permiso). La interfaz universal también reduce el código repetitivo al degradar
con elegancia las funciones que no sean aplicables. Por ejemplo, no tiene mucho sentido
enviar una barra de jefe a un emisor de comandos, y no se pueden enviar títulos a clientes de Minecraft 1.7.

Normalmente obtendrás instancias de audiencia desde una de las [Plataformas](/es/adventure/platform).
La propia API de Adventure incluye dos implementaciones de audiencia: una que no
admite ninguna acción (y, por tanto, no hace nada), `Audience.empty()`, y otra que
reenvía cada acción a todos los miembros de la audiencia, mediante `Audience.audience()` y métodos relacionados,
junto con `ForwardingAudience`, que implementa por ti la lógica de reenvío.

La mayoría de los usuarios empleará esta API principalmente para mostrar contenido creado por otras partes
de la API.

## Audiencias de reenvío

Una [](jd:adventure:net.kyori.adventure.audience.ForwardingAudience) reenvía a otras audiencias
todas las acciones que recibe. Su único método abstracto es `audiences()`,
así que basta con implementarlo para convertir uno de tus tipos en una audiencia:

```java title=GameTeam.java
public class GameTeam implements ForwardingAudience {
private final List<GamePlayer> players = new ArrayList<>();

// ...

@Override
public Iterable<? extends Audience> audiences() {
return this.players;
}
}
```

Ahora puedes enviar al equipo completo todo lo que se pueda enviar a una audiencia:

```java
final GameTeam team = /* ... */;
team.sendMessage(Component.text("¡La partida empieza en 10 segundos!"));
team.playSound(Sound.sound(Key.key("block.note_block.pling"), Sound.Source.MASTER, 1F, 1F));
```

`audiences()` se llama cada vez que se reenvía una acción, así que los miembros que se añadan
o eliminen de la colección subyacente se tendrán en cuenta automáticamente.

Si no necesitas un tipo propio,
[`Audience.audience(Iterable<? extends Audience>)`](jd:adventure:net.kyori.adventure.audience.Audience#audience(java.lang.Iterable)),
[`Audience.audience(Audience...)`](jd:adventure:net.kyori.adventure.audience.Audience#audience(net.kyori.adventure.audience.Audience...)),
y el colector [`Audience.toAudience()`](jd:adventure:net.kyori.adventure.audience.Audience#toAudience())
pueden crear por ti una `ForwardingAudience`.

Una audiencia de reenvío formada por varios miembros no tiene punteros propios, así que
`get(Identity.UUID)` en el `GameTeam` anterior devolvería un `Optional` vacío.

### Envolver una sola audiencia

Para envolver exactamente una audiencia, implementa en su lugar
[](jd:adventure:net.kyori.adventure.audience.ForwardingAudience$Single). Reenvía tanto los punteros como las acciones:

```java title=GamePlayer.java
public class GamePlayer implements ForwardingAudience.Single {
private final Audience audience;
private int score;

public GamePlayer(final Audience audience) {
this.audience = audience;
}

@Override
public Audience audience() {
return this.audience;
}
}
```

Esto resulta especialmente útil en proyectos compatibles con más de una plataforma. Si el código común
solo trabaja con `GamePlayer`, cada módulo de plataforma puede proporcionar la audiencia de
su propio tipo de jugador. Consulta [Plataformas](/es/adventure/platform) para obtener más información.

### Cambiar qué se reenvía

Muchos métodos de `Audience` son sobrecargas de conveniencia que terminan llamando a un conjunto reducido
de métodos. `sendMessage(ComponentLike)` llama a `sendMessage(Component)` y
`showTitle(Title)` llama a `sendTitlePart` una vez por cada parte del título.
`ForwardingAudience` solo sobrescribe ese conjunto reducido, así que basta con sobrescribir esos métodos
para cambiar el comportamiento de la audiencia:

```java title=GameTeam.java
public class GameTeam implements ForwardingAudience {
private static final Component PREFIX = Component.text("[Team] ");

// ...

@Override
public void sendMessage(final Component message) {
// También se aplica a sendMessage(ComponentLike)
ForwardingAudience.super.sendMessage(PREFIX.append(message));
}
}
```

## Punteros

Las audiencias también pueden proporcionar información arbitraria, como el nombre visible o el UUID.
Esto se hace mediante el sistema de punteros.

Ejemplos:

```java
// Obtener el UUID de un miembro de la audiencia; devuelve un Optional<UUID>
audience.get(Identity.UUID);

// Obtener el nombre visible o, si no está definido, un valor predeterminado
audience.getOrDefault(Identity.DISPLAY_NAME, Component.text("sin nombre visible"));
```
34 changes: 34 additions & 0 deletions src/content/docs/es/adventure/book.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
title: Libros
slug: es/adventure/book
description: Guía sobre los libros de Adventure.
---

## Crear un libro

Los libros se componen de:
* Un componente para el título del libro
* Un componente para el autor del libro
* Una colección de componentes para las páginas del libro

**Ejemplo:**

```java
// Crear y abrir para la audiencia destinataria un libro sobre gatos
public void openMyBook(final Audience target) {
final Component bookTitle = Component.text("Enciclopedia de los gatos");
final Component bookAuthor = Component.text("kashike");
final Collection<Component> bookPages = Cats.getCatKnowledge();

final Book myBook = Book.book(bookTitle, bookAuthor, bookPages);
target.openBook(myBook);
}
```

## Información adicional sobre los libros

Los libros de Adventure no están necesariamente vinculados a un objeto de libro con el que se pueda interactuar en el cliente.
En la versión actual, esa conexión debe implementarse fuera de Adventure.

Cualquier componente que supere el límite de texto por página del juego se truncará en el cliente; lo mismo se aplica
a la cantidad de componentes (páginas). Puedes leer más sobre estos límites en la [Minecraft Wiki](https://minecraft.wiki/w/Book_and_Quill#Writing).
61 changes: 61 additions & 0 deletions src/content/docs/es/adventure/bossbar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
title: Barras de jefe
slug: es/adventure/bossbar
description: Guía sobre las barras de jefe de Adventure.
---

## Crear una barra de jefe

Las barras de jefe se componen de:
* Un componente para el título de la barra de jefe
* Un número de 0 a 1 que determina cuánto se llena la barra de jefe
* Un color, que se reducirá a una paleta compatible en clientes <1.9
* Una superposición que determina el número de segmentos visuales de la barra de jefe


**Ejemplos:**

```java
private @Nullable BossBar activeBar;

public void showMyBossBar(final Audience target) {
final Component name = Component.text("Barra de jefe increíble");
// Crear una barra de jefe roja, vacía y sin segmentos
final BossBar emptyBar = BossBar.bossBar(name, 0, BossBar.Color.RED, BossBar.Overlay.PROGRESS);
// Crear una barra de jefe verde, con un 50 % de progreso y 10 segmentos
final BossBar halfBar = BossBar.bossBar(name, 0.5F, BossBar.Color.GREEN, BossBar.Overlay.NOTCHED_10);
// etc.
final BossBar fullBar = BossBar.bossBar(name, 1, BossBar.Color.BLUE, BossBar.Overlay.NOTCHED_20);

// Enviar una barra de jefe a la audiencia
target.showBossBar(fullBar);

// Guardarla localmente para poder ocultarla manualmente más adelante
this.activeBar = fullBar;
}

public void hideActiveBossBar(final Audience target) {
target.hideBossBar(this.activeBar);
this.activeBar = null;
}
```

## Cambiar una barra de jefe activa

Las barras de jefe son mutables y reaccionan a los cambios en su objeto:
la vista del juego se actualizará automáticamente, ¡sin necesidad de refrescarla manualmente!

Por tanto, si esta barra de jefe está activa:

```java
final BossBar bossBar = BossBar.bossBar(Component.text("Contador de gatos"), 0, BossBar.Color.RED, BossBar.Overlay.PROGRESS);
```

y se llama a `BossBar.name()` con un componente

```java
final Component newText = Component.text("Contador de patos");
bossBar.name(newText);
```

la barra de jefe se actualizará automáticamente. Lo mismo ocurre con `progress`, `color` y `overlay`.
73 changes: 73 additions & 0 deletions src/content/docs/es/adventure/community-libraries.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
title: Bibliotecas de la comunidad
slug: es/adventure/community-libraries
description: Bibliotecas que utilizan la API de Adventure.
---

Adventure busca proporcionar las bibliotecas básicas necesarias para interactuar con componentes del chat.
Sin embargo, dado el tiempo y los recursos limitados del equipo de Adventure, y la enorme cantidad de casos de uso posibles, no podemos ofrecer soluciones directas para todos los problemas.

Por suerte, muchos miembros de nuestra comunidad han creado bibliotecas que complementan Adventure y ofrecen funciones adicionales e integraciones con otros programas.

:::note

Esta lista de bibliotecas se ofrece únicamente como referencia.
El equipo de Adventure no respalda ninguna biblioteca en particular ni puede proporcionar información o asistencia más allá de los enlaces incluidos.

Si quieres que se incluya una biblioteca, abre una solicitud de cambios en el repositorio [PaperMC/docs](https://github.com/PaperMC/docs).

:::

{/* Los elementos de todas estas tablas deben ordenarse alfabéticamente */}

## Serializadores

Estas bibliotecas se centran en ofrecer formatos de serialización adicionales para componentes del chat.
Normalmente no dependen de una plataforma concreta, sino solo de Adventure y, posiblemente, de alguna biblioteca con la que se integren.

{/* spellchecker:off */}
Nombre | Descripción | Enlace
----------------------------|-----------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------
EnhancedLegacyText | Formato de entrada alternativo compatible con las nuevas funciones del formato antiguo | [Vankka/EnhancedLegacyText](https://github.com/Vankka/EnhancedLegacyText)
MCDiscordReserializer | Serializadores para convertir entre Minecraft y Discord | [Vankka/MCDiscordReserializer](https://github.com/Vankka/MCDiscordReserializer)
Minedown | Formato de estilo Markdown para representar componentes | [Phoenix616/MineDown](https://github.com/Phoenix616/MineDown)
{/* spellchecker:on */}

## Plataformas

Estas bibliotecas proporcionan implementaciones de Adventure en distintas plataformas que no están integradas oficialmente en el software ni mantenidas por el equipo de Adventure.

{/* spellchecker:off */}
Nombre | Descripción | Enlace
----------------------------|-----------------------------------------------|-----------------------------------------------------------------------------------------------------
adventure-platform-hytale | Implementación de la plataforma Adventure para Hytale | [ArikSquad/adventure-platform-hytale](https://github.com/ArikSquad/adventure-platform-hytale)
{/* spellchecker:on */}

## Ampliaciones

Estas bibliotecas amplían la API principal de Adventure con funciones independientes de la plataforma que no se incluyen en el proyecto principal o no son adecuadas para incluirse en él.

{/* spellchecker:off */}
Nombre | Descripción | Enlace
--------------------|-----------------------------------------------------------------------|----------------------------------------------------
MiniPlaceholders | Biblioteca de marcadores de posición basada en componentes MiniMessage e independiente de la plataforma | [MiniPlaceholders/MiniPlaceholders](https://github.com/MiniPlaceholders/MiniPlaceholders)
{/* spellchecker:on */}

## Bibliotecas adicionales de interfaz de usuario

Estas bibliotecas usan Adventure en su API, pero se centran en aspectos distintos a los componentes del chat.
Permiten usar Adventure en elementos de interfaz de usuario que no admiten las bibliotecas principales de Adventure.
Entre ellos se incluyen los comandos, los marcadores y los inventarios.
A menudo, estas bibliotecas dependen de una o varias plataformas concretas para ofrecer su funcionalidad.

{/* spellchecker:off */}
Nombre | Descripción | Enlace
--------------------|-----------------------------------------------------------------------|----------------------------------------------------
Cloud | Despachador de comandos y marco de trabajo de propósito general para Java | [Incendo/cloud](https://github.com/Incendo/cloud)
Creative | Biblioteca de paquetes de recursos para Minecraft: Java Edition | [unnamed/creative](https://github.com/unnamed/creative)
Inventory Framework | Marco de trabajo de inventarios para administrar interfaces gráficas | [stefvanschie/IF](https://github.com/stefvanschie/IF)
LiteCommands | Marco de trabajo de comandos basado en anotaciones para Velocity, Bukkit y BungeeCord | [Rollczi/LiteCommands](https://github.com/Rollczi/LiteCommands)
ProtocolSidebar | Biblioteca de barras laterales fácil de usar para servidores Paper/Spigot | [CatCoderr/ProtocolSidebar](https://github.com/CatCoderr/ProtocolSidebar)
ScoreboardLibrary | Biblioteca de marcadores para servidores Paper/Spigot | [MegavexNetwork/scoreboard-library](https://github.com/MegavexNetwork/scoreboard-library)
Triumph GUI | Biblioteca que simplifica la creación de interfaces gráficas de inventario | [TriumphTeam/triumph-gui](https://github.com/TriumphTeam/triumph-gui)
{/* spellchecker:on */}
Loading
Loading