# ✅| Validación y Publicación

La validación y publicación son los pasos finales antes de que un diálogo quede disponible para el plugin Minecraft.

Validar sirve para encontrar errores en el flujo. Publicar sirve para enviar una versión lista del diálogo al backend, para que el plugin pueda sincronizarla.

### Diferencia entre guardar, validar y publicar

En el panel web hay tres acciones importantes:

| Acción   | Qué hace                                                     |
| -------- | ------------------------------------------------------------ |
| Guardar  | Guarda los cambios del diálogo como draft                    |
| Validar  | Revisa si el diálogo tiene errores estructurales             |
| Publicar | Marca el diálogo como versión disponible para sincronización |

Guardar no significa que el plugin ya vaya a usar ese diálogo.

Para que Minecraft reciba los cambios, el diálogo debe estar publicado y luego el plugin debe sincronizar.

***

### Guardar cambios

Mientras editás un diálogo, usá:

```txt
Guardar
```

Esto actualiza el draft del diálogo en el panel.

Usá Guardar cuando:

* Cambiaste el nombre.
* Cambiaste el ID del NPC.
* Agregaste nodos.
* Editaste opciones.
* Modificaste acciones.
* Cambiaste condiciones.
* Activaste visuales del resource pack.

***

### Validar diálogo

Antes de publicar, usá:

`Validar`

La validación revisa el diálogo y muestra el resultado en el panel de validación.

Puede detectar problemas como:

* Falta el nombre del diálogo.
* Falta el ID del NPC.
* El nodo inicial no existe.
* Hay nodos inalcanzables.
* Una opción apunta a un nodo inexistente.
* Hay referencias rotas en acciones.
* Hay condiciones mal configuradas.
* El flujo tiene errores estructurales.

<div align="left"><figure><img src="/files/yRmZLH2IFLXSmDuTtrlN" alt=""><figcaption></figcaption></figure></div>

### Resultado de validación

Si el diálogo está correcto, vas a ver un resultado similar a:

`Validacion correcta`

Si hay errores, el panel mostrará los detalles para corregirlos.

Ejemplo:

`Validacion con errores`

En ese caso, revisá los nodos, opciones y acciones marcadas.

***

### Errores comunes de validación

#### Nodo inicial inexistente

Ocurre cuando el campo Nodo inicial apunta a un ID que no existe.

Solución:

1. Revisá el ID del nodo inicial.
2. Confirmá que exista un nodo con ese ID.
3. Guardá.
4. Validá de nuevo.

#### Nodo inalcanzable

Ocurre cuando un nodo existe, pero no hay ningún camino que llegue hasta él desde el nodo inicial.

Solución:

* Conectá una opción hacia ese nodo.
* O eliminá el nodo si no se usa.
* O cambiá el nodo inicial si corresponde.

#### Opción apunta a nodo inexistente

Ocurre cuando una opción intenta avanzar hacia un nodo que fue borrado o renombrado.

Solución:

1. Abrí la opción.
2. Revisá la acción de salto.
3. Seleccioná un nodo destino válido.
4. Guardá y validá otra vez.

#### Acción goto\_node rota

Ocurre cuando una acción goto\_node apunta a un ID inválido.

Ejemplo:

`goto_node → mision_final`

Si mision\_final no existe, la validación debe marcar error.

Solución:

* Crear el nodo faltante.
* O cambiar el destino de la acción.
* O eliminar la acción.

***

### Publicar diálogo

Cuando el diálogo ya está listo, usá:

`Publicar`

Al publicar, el panel muestra una confirmación.

La publicación reemplaza la versión publicada anterior para ese NPC.

Esto significa que el plugin usará esta nueva versión después de la próxima sincronización.

***

### Qué pasa al publicar

Cuando publicás un diálogo:

1. El panel guarda los cambios actuales.
2. El backend valida la información.
3. El diálogo cambia a estado publicado.
4. Se incrementa la versión del diálogo.
5. Queda disponible para que el plugin lo descargue.
6. El plugin lo usará después del siguiente /nrt sync o sync automático.

***

### Sincronizar después de publicar

Después de publicar, entrá al servidor Minecraft y ejecutá:

`/nrt sync`

Si el sync automático está activado, también podés esperar el intervalo configurado:

`backend: sync: auto-refresh-enabled: true auto-refresh-minutes: 5`

Pero para pruebas rápidas se recomienda usar /nrt sync.

```mermaid
flowchart TD
    A[Editar diálogo] --> B[Guardar]
    B --> C[Simular conversación]
    C --> D[Validar]
    D --> E{¿Tiene errores?}
    E -->|Sí| F[Corregir nodos, opciones o acciones]
    F --> B
    E -->|No| G[Publicar]
    G --> H[Ejecutar /nrt sync]
    H --> I[Probar en Minecraft]

```

### Estados del diálogo

Un diálogo puede estar en distintos estados.

| Estado      | Significado                                                |
| ----------- | ---------------------------------------------------------- |
| Draft       | Tiene cambios guardados, pero no necesariamente publicados |
| Published   | Está disponible para sincronización                        |
| Actualizado | Tiene una versión modificada pendiente de publicar         |

{% hint style="info" %}
El plugin solo usara diálogos publicados.
{% endhint %}

***

### Versiones

Cada vez que publicás un diálogo, se incrementa su versión.

Esto sirve para identificar qué versión está usando el backend y qué versión debería sincronizar el plugin.

Ejemplo:

`v1`

`v2`

`v3`

Si publicás un cambio y el plugin no lo refleja, revisá que se haya sincronizado después de publicar.

***

### Publicar cambios con Resource Pack

Si modificaste texturas o visuales:

1. Guardá el diálogo.
2. Guardá el resource pack.
3. Descargá el ZIP actualizado.
4. Instalá o actualizá el resource pack en Minecraft.
5. Publicá el diálogo.
6. Ejecutá /nrt sync.
7. Recargá el resource pack en el cliente si hace falta.

Si el diálogo usa glifos nuevos pero el jugador tiene un resource pack viejo, verá símbolos raros.

***

### Cuándo validar

Validá siempre antes de publicar.

Especialmente si el diálogo tiene:

* Muchos nodos.
* Opciones con condiciones.
* Acciones goto\_node.
* Acciones globales.
* Ramas de éxito y fallo.
* Cierre automático.
* Visuales custom.
* Importación desde JSON.

***

### Cuándo publicar

Publicá cuando:

* El flujo ya fue probado en el simulador.
* La validación no muestra errores.
* El ID del NPC es correcto.
* El diálogo está listo para que lo use el servidor.
* Ya revisaste comandos, condiciones y recompensas.

***

### Prueba final en Minecraft

Después de publicar y sincronizar:

1. Entrá al servidor.
2. Ejecutá:

`/nrt sync`

3. Interactuá con el NPC.
4. Revisá que el diálogo inicie correctamente.
5. Probá cada opción importante.
6. Confirmá que las condiciones funcionen.
7. Confirmá que los comandos hagan lo esperado.
8. Confirmá que la conversación termine correctamente.

***

### Problemas comunes

#### Guardé el diálogo pero Minecraft no cambió

Guardar no publica.

Tenés que usar:

`Publicar`

y luego:

`/nrt sync`

#### Publiqué pero el plugin sigue usando la versión anterior

Ejecutá sync manual:

`/nrt sync`

También verificá que el plugin esté conectado al backend correcto.

#### La validación marca un nodo inalcanzable

Ese nodo no tiene ningún camino desde el nodo inicial.

Conectalo desde una opción o eliminálo si no se usa.

#### El diálogo publicado no corresponde al NPC

Revisá el ID de Citizens en el panel.

En Minecraft podés verlo con:

`/npc info`

#### Los comandos no funcionan in-game

El simulador solo muestra los comandos.

Probá los comandos reales dentro del servidor y revisá permisos, plugins y formato.

### Checklist antes de publicar

* El diálogo tiene nombre claro.
* El ID del NPC es correcto.
* El nodo inicial existe.
* No hay nodos inalcanzables no intencionales.
* Todas las opciones importantes fueron probadas.
* Las condiciones fueron probadas en el simulador.
* Los comandos fueron revisados.
* Los visuales custom fueron guardados.
* El diálogo fue validado.
* El plugin fue sincronizado después de publicar.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wikinrt.mstudiosmc.online/panel-web/or-validacion-y-publicacion.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
