NapNodes

← Guías de Minecraft

Minecraft · actualizada el 3 de noviembre de 2026

Comando /dialog en Minecraft: normas al entrar y menús con botones en tu servidor

Desde la 1.21.6, Minecraft trae ventanas propias: un recuadro con título, texto y botones que el servidor abre a quien quiera. Con ellas se enseñan las normas al entrar, se pone un menú con el enlace del Discord o un botón para ir al spawn, y hasta se añade una opción al menú de pausa. Sin plugins, con el comando /dialog y un datapack pequeño. Aquí todo con la forma de la versión de hoy de Java.

¿Se lo pasas a tu grupo?WhatsApp

Qué es un diálogo y qué se puede hacer

Un diálogo es una pantalla que se abre encima del juego: un título, un texto (o un objeto con su descripción), a veces casillas para escribir o elegir, y uno o varios botones. Cada botón puede abrir una web, copiar un texto, lanzar un comando, abrir otro diálogo o simplemente cerrar.

Solo existe en Java, desde la 1.21.6: en versiones anteriores no hay nada parecido sin mods ni plugins, y Bedrock no lo tiene.

Hay cinco tipos: notice (un aviso con un solo botón), confirmation (sí o no), multi_action (una rejilla de botones, el menú), dialog_list (botones que abren otros diálogos) y server_links (los enlaces que manda el servidor).

¿Prefieres no montarlo tú? Servidores de Minecraft desde 6 € al mes, sin permanencia y con devolución íntegra en 72 horas. O crea un servidor de Minecraft gratis, sin tarjeta.

Cómo se escribe

Tiene dos formas: /dialog show <jugadores> <diálogo> lo abre y /dialog clear <jugadores> lo cierra. Si sale bien, el juego responde «Mostrando diálogo a Ana» o «Mostrando diálogo a 5 jugadores».

Hace falta ser operador (nivel 2) o tener los trucos activados en un mundo de un jugador. En un servidor, te haces op desde la consola con op TuNombre (la guía de dar op). Los jugadores con selectores, como siempre: @a todos, @p el más cercano, o un nombre (la guía de selectores).

El diálogo puede ser el nombre de uno guardado en un datapack (napnodes:normas) o uno escrito en el propio comando, entre llaves. Lo segundo es lo rápido para un aviso de una vez; lo primero, para lo que se repite.

  1. Un aviso a todos ahora mismo

    /dialog show @a {type:"minecraft:notice",title:"Reinicio en 5 minutos",body:{type:"minecraft:plain_message",contents:"Guardad lo que tengáis a medias."}} abre a todos un aviso con su botón «Aceptar».

  2. Los enlaces del servidor

    /dialog show @a minecraft:server_links abre «Enlaces del servidor», el diálogo que trae el juego con los enlaces que haya mandado el servidor. Uno de Paper sin plugins no manda ninguno; algunos plugins sí los añaden.

  3. Cerrarlo

    /dialog clear @a cierra el diálogo que tengan abierto.

Las normas al entrar, con un datapack

Lo que más se pide: que quien entra vea las normas antes de jugar. Se hace con un datapack de cuatro ficheros. La carpeta napnodes es el nombre del datapack: cámbialo por el tuyo, en minúsculas y sin espacios, en todos los sitios donde sale. Si prefieres no escribirlo a mano, el generador de diálogos te da este mismo datapack, y el menú de más abajo, con tus normas y tus botones, en un .zip.

El diálogo va en data/napnodes/dialog/normas.json. Con can_close_with_escape en false, no se cierra con Esc: hay que pulsar «Entendido». El salto de línea dentro del texto es \n. Si tienes ya tus normas escritas, cópialas aquí (y si no, en la guía de normas hay tres listas para empezar).

data/napnodes/dialog/normas.json
{
  "type": "minecraft:notice",
  "title": "Normas del servidor",
  "body": {
    "type": "minecraft:plain_message",
    "contents": "1. Respeto en el chat.\n2. Lo que construye otro no se toca.\n3. Nada de trampas ni mods de ventaja.\n\nSi tienes un problema, avisa a un admin."
  },
  "action": { "label": "Entendido" },
  "can_close_with_escape": false
}
data/napnodes/function/load.mcfunction
# Se ejecuta al cargar el datapack: crea los marcadores que usa tick
scoreboard objectives add nap_salidas minecraft.custom:minecraft.leave_game
scoreboard objectives add nap_espera dummy
scoreboard objectives add normas trigger
data/napnodes/function/tick.mcfunction
# Quien entra por primera vez o vuelve: espera 2 segundos (40 ticks) a que cargue
scoreboard players set @a[tag=!nap_visto] nap_espera 40
tag @a[tag=!nap_visto] add nap_visto
scoreboard players set @a[scores={nap_salidas=1..}] nap_espera 40
scoreboard players reset @a[scores={nap_salidas=1..}] nap_salidas
# Al acabar la cuenta, las normas
dialog show @a[scores={nap_espera=1}] napnodes:normas
scoreboard players remove @a[scores={nap_espera=1..}] nap_espera 1
# /trigger normas: cualquiera puede volver a verlas
scoreboard players enable @a normas
dialog show @a[scores={normas=1..}] napnodes:normas
scoreboard players set @a[scores={normas=1..}] normas 0
data/minecraft/tags/function/load.json y tick.json
// load.json
{ "values": ["napnodes:load"] }

// tick.json
{ "values": ["napnodes:tick"] }
  1. El pack.mcmeta

    En la raíz, junto a la carpeta data, va el pack.mcmeta con el número de formato de tu versión. Para la 26.3 son min_format y max_format en 121; para otra versión, sácalo con el generador de pack.mcmeta. Los dos ficheros de tags/function van por separado, cada uno con su línea.

  2. Comprímelo

    Haz un .zip con pack.mcmeta y la carpeta data dentro, directamente, sin otra carpeta por encima.

  3. Súbelo a datapacks

    A la carpeta datapacks del mundo (world/datapacks) y reinicia el servidor. Cómo comprobar que ha cargado, en la guía de datapacks.

  4. Pruébalo

    Sal y vuelve a entrar: a los dos segundos tienen que salirte las normas. Si no, /dialog show @s napnodes:normas dice si el diálogo existe; si da error de que no lo encuentra, el fichero no está en data/napnodes/dialog/ o tiene un fallo de JSON.

Un menú con botones: Discord, spawn y la IP

Con multi_action se hace un menú: una rejilla de botones, dos por fila si no dices otra cosa (columns). Va en data/napnodes/dialog/menu.json, en el mismo datapack.

Los botones de run_command lanzan el comando como si lo escribiera quien pulsa, con sus permisos: si no es op, uno de op le da error. Para lo que tiene que poder hacer cualquiera, el botón usa /trigger, que no pide permisos, y la función tick hace el resto. Los comandos que mandan un mensaje firmado al chat, como /msg o /say, no valen desde un botón.

data/napnodes/dialog/menu.json
{
  "type": "minecraft:multi_action",
  "title": "Menú del servidor",
  "columns": 2,
  "actions": [
    { "label": "Normas", "action": { "type": "minecraft:show_dialog", "dialog": "napnodes:normas" } },
    { "label": "Ir al spawn", "action": { "type": "minecraft:run_command", "command": "trigger spawn" } },
    { "label": "Nuestro Discord", "action": { "type": "minecraft:open_url", "url": "https://discord.gg/tu-invitacion" } },
    { "label": "Copiar la IP", "action": { "type": "minecraft:copy_to_clipboard", "value": "tuservidor.play.napnodes.com" } }
  ],
  "exit_action": { "label": "Cerrar" }
}
Añadir a load.mcfunction y a tick.mcfunction
# load.mcfunction
scoreboard objectives add spawn trigger
scoreboard objectives add menu trigger

# tick.mcfunction (cambia 0 80 0 por las coordenadas de tu spawn)
scoreboard players enable @a spawn
execute in minecraft:overworld run tp @a[scores={spawn=1..}] 0 80 0
scoreboard players set @a[scores={spawn=1..}] spawn 0
scoreboard players enable @a menu
dialog show @a[scores={menu=1..}] napnodes:menu
scoreboard players set @a[scores={menu=1..}] menu 0
  1. Ábrelo con /trigger menu

    Cualquier jugador escribe /trigger menu y le sale. Si responde «Aún no puedes activar este objetivo desencadenante», la función tick no está corriendo: el datapack no ha cargado.

  2. O desde un texto del chat

    /tellraw @a {text:"[Abrir el menú]",color:"light_purple",click_event:{action:"show_dialog",dialog:"napnodes:menu"}} deja en el chat un texto que lo abre al pulsarlo. Los colores, con el generador de tellraw.

  3. Con la IP de verdad

    Cambia tuservidor.play.napnodes.com por la dirección de tu servidor, y el enlace de Discord por el tuyo.

En el menú de pausa y en «Acciones rápidas»

Dos etiquetas del juego meten tus diálogos donde el jugador los encuentra solo, sin escribir nada. Van en data/minecraft/tags/dialog/, en el mismo datapack.

data/minecraft/tags/dialog/pause_screen_additions.json
{ "values": ["napnodes:menu"] }
  1. pause_screen_additions

    Lo que pongas aquí sale en el menú de pausa (Esc) de quien está en tu servidor. Con varios diálogos, se juntan bajo «Opciones personalizadas...». El nombre del botón es el title del diálogo, o su external_title si quieres otro más corto.

  2. quick_actions

    El mismo formato en quick_actions.json: los diálogos de aquí salen en «Acciones rápidas», que se abre con su tecla. Cada jugador la elige en Opciones → Controles; avísalos de que existe, porque casi nadie la conoce.

Casillas para escribir y elegir (para admins)

Un diálogo puede pedir datos: inputs con casillas de texto (text), de sí o no (boolean), de elegir una opción (single_option) o un deslizador (number_range). Cada una lleva una key, y el botón con la acción dynamic/run_command mete lo escrito en su comando con $(key).

Por ejemplo, un panel de anuncios para los admins: una casilla de texto con key texto y un botón con {"type":"minecraft:dynamic/run_command","template":"title @a title \"$(texto)\""} pone lo que escribas en grande en la pantalla de todos. Como /title es de op, a un jugador normal ese botón le daría error: ábrelo solo a los admins.

Lo que se escribe en la casilla se escapa solo (comillas incluidas) para que quepa entre las comillas del comando. Los botones de tipo custom y dynamic/custom no hacen nada en un servidor sin plugins: son para que un plugin los reciba.

Los errores de siempre

Que no encuentra el diálogo: el nombre no coincide con la ruta. napnodes:normas tiene que estar en data/napnodes/dialog/normas.json, con la carpeta dialog en singular. Si el JSON tiene un fallo, el aviso exacto sale en la consola al arrancar.

Un comando de un vídeo que no funciona: los diálogos son de la 1.21.6 y en la 1.21.5 cambió cómo se escriben los textos con clic en los comandos (click_event y url o command, en vez de clickEvent y value). Lo de esta guía es la forma de hoy.

Las normas no salen al entrar: comprueba con /datapack list que el datapack está activo y que tick.json lleva bien el nombre de la función. Si vienes de un datapack viejo, desde la 1.21 las carpetas son function y tags/function, en singular.

Un botón no hace nada: si lanza un comando de op y quien pulsa no lo es, no se ejecuta. Pásalo a /trigger como el botón del spawn.

En NapNodes

Los servidores de Minecraft van en Paper con la última versión, así que los diálogos funcionan tal cual, con plugins o sin ellos. Desde «Consola» del panel lanzas cualquier /dialog sin la barra; el datapack se sube en «Archivos», a world/datapacks, y se carga al reiniciar.

Si tus amigos aún no tienen dónde jugar, el servidor de Minecraft gratis vale para probarlo: se enciende con «Encender» cuando vayáis a entrar.

Preguntas frecuentes

¿Cómo pongo las normas al entrar a mi servidor de Minecraft?

Con un diálogo de tipo notice en un datapack y una función tick que lo abre a quien entra con /dialog show. Funciona en Java desde la 1.21.6, sin plugins.

¿Qué hace el comando /dialog?

Abre o cierra una ventana con título, texto y botones: /dialog show <jugadores> <diálogo> la abre y /dialog clear <jugadores> la cierra. Hace falta ser operador.

¿En qué versión salió /dialog?

En la 1.21.6 de Java. En Bedrock no existe.

¿Puede usar un diálogo un jugador que no es op?

Puede verlo y pulsar sus botones, pero los comandos de los botones van con sus permisos. Para lo que tiene que poder hacer cualquiera, el botón usa /trigger.

¿Cómo añado un botón al menú de pausa de mi servidor?

Con la etiqueta de diálogos pause_screen_additions en un datapack: data/minecraft/tags/dialog/pause_screen_additions.json con el nombre de tu diálogo.

¿Cómo abro un diálogo al pulsar un texto del chat?

Con tellraw y click_event de tipo show_dialog: /tellraw @a {text:"[Menú]",click_event:{action:"show_dialog",dialog:"napnodes:menu"}}.

¿Te ha servido esta guía?

¿Lo montamos?

Servidores de Minecraft desde 6 € al mes, sin sobreventa: tu RAM es solo tuya. Y si quieres empezar sin pagar, tienes un servidor de Minecraft gratis, sin tarjeta.

¿Tu servidor no aparece en el juego? Compruébalo en un segundo con «¿Está encendido mi servidor?»: jugadores, versión y MOTD, gratis. ¿Necesitas el UUID de un jugador para la whitelist o los permisos? Búscalo aquí. ¿Vas a dar objetos encantados? Crea el comando con el generador de /give.

Herramienta gratis: Generador de diálogos (/dialog). Las normas que salen al entrar y un menú con botones (Discord, spawn, copiar la IP) para tu servidor de Minecraft: el datapack en .zip, sin plugins.

Herramienta gratis: Generador de /tellraw y /title. Mensajes con colores, negrita y clic en el chat o en el centro de la pantalla: el comando /tellraw o /title listo para copiar.

Herramienta gratis: Generador de pack.mcmeta. El pack.mcmeta de tu datapack o resource pack con el número de cada versión (de la 1.14 a la 26.3), y el comprobador del tuyo.

Sigue leyendo

Todas las guías de Minecraft, ordenadas →