1. Wiki
  2. /Comandos
  3. /Funciones y bloques de comandos

Funciones y bloques de comandos

Agrupa comandos de Minecraft Bedrock en archivos .mcfunction, ejecútalos con /function o en cada tick, y usa bloques de comandos de impulso, cadena y repetición.

Escribir los mismos diez comandos una y otra vez cansa enseguida. Una función es un archivo de texto lleno de comandos que los ejecuta todos a la vez con una sola llamada a /function. Las funciones también pueden ejecutarse solas en cada tick del juego, y así es como muchos complementos hacen que pasen cosas todo el tiempo.

Si los comandos son nuevos para ti, lee primero Conceptos básicos de comandos.

La forma rápida: GodCraft

GodCraft tiene un objeto Función que escribe por ti los archivos y la lista de ticks.

  1. Abre el Taller y añade una Función a tu complemento.
  2. Escribe un comando por línea. Las sugerencias te proponen comandos y argumentos mientras escribes.
  3. Elige cómo se ejecuta: en cada tick, una vez al cargar el mundo, o solo con /function.
  4. Exporta. El archivo .mcfunction, tick.json, los manifiestos y los UUID se escriben por ti.

A mano

Paso 1: crea un archivo de función

Las funciones viven en el paquete de comportamiento (BP), dentro de una carpeta llamada functions. El archivo termina en .mcfunction y es texto plano: puedes escribirlo en cualquier editor de texto.

BP/functions/myname/starter_kit.mcfunction
# Gives whoever runs this function a starter kit
give @s minecraft:stone_sword
give @s minecraft:bread 8
give @s minecraft:torch 16
effect @s minecraft:speed 60 0
say Your starter kit is ready!

Las reglas son sencillas:

  • Un comando por línea. Un comando no se puede partir en dos líneas.
  • Sin barra. Escribe give, no /give.
  • Las líneas que empiezan por # son comentarios. El juego las ignora. Úsalas para explicar qué hace la función.
  • Las líneas vacías están permitidas y hacen que los archivos largos se lean mejor.

Usa una carpeta con tu nombre

Si pones tus archivos en una carpeta como functions/myname/, evitas choques con otros complementos que también tengan una función starter_kit.

Paso 2: ejecútala

Carga un mundo con tu paquete de comportamiento activado y los trucos habilitados, y escribe:

Chat
/function myname/starter_kit

El nombre es la ruta dentro de la carpeta functions, con / entre carpetas y sin la terminación .mcfunction. Consulta /function.

Dentro de una función, @s y ~ ~ ~ significan quien ejecutó /function y dónde está. Así que cuando ejecutas el kit de inicio, los objetos te los llevas tú.

Carpetas anidadas

Puedes ordenar las funciones en tantas carpetas como quieras:

Estructura de carpetas
BP/functions/
  tick.json
  myname/
    starter_kit.mcfunction
    tick.mcfunction
    arena/
      start.mcfunction
      reset.mcfunction

Ejecuta la anidada con /function myname/arena/start.

Las funciones también pueden llamar a otras funciones. Es genial para dividir un trabajo grande en partes pequeñas:

BP/functions/myname/arena/start.mcfunction
# Clean up, then teleport everyone in
function myname/arena/reset
tp @a 0 80 0
title @a title Fight!

No te llames a ti misma

Una función que se llama a sí misma, directamente o a través de otra función, crea un bucle infinito. El juego la corta tras demasiados comandos, así que el resultado no será el que esperas.

Paso 3: ejecuta en cada tick con tick.json

Minecraft actualiza el mundo 20 veces por segundo. Cada actualización es un tick. Para ejecutar una función en cada tick, añádela a tick.json, directamente dentro de la carpeta functions:

BP/functions/tick.json
{
  "values": [
    "myname/tick"
  ]
}

Cada entrada de values es la ruta de una función, escrita igual que con /function. Ahora escribe la función de tick:

BP/functions/myname/tick.mcfunction
# Players standing on a gold block get Speed
execute as @a at @s if block ~ ~-1 ~ minecraft:gold_block run effect @s minecraft:speed 1 1 true

Esto comprueba a cada jugador 20 veces por segundo. Quien esté sobre un bloque de oro recibe un breve impulso de Velocidad, que se renueva mientras siga ahí. El true del final oculta las partículas del efecto.

¿Quién es @s en una función de tick?

Las funciones de tick las ejecuta el propio juego, no un jugador, así que @s no apunta a nadie. Usa /execute con as @a o as @e[...] para ejecutar comandos para cada jugador o criatura, como en el ejemplo de arriba.

Mantén ligeras las funciones de tick. Algo que se ejecuta 20 veces por segundo para cada jugador se acumula rápido. Acota tus selectores con argumentos como type, r o tag.

Recargar los cambios

Después de editar un archivo de función no hace falta reiniciar el juego. Ejecuta /reload para cargar las nuevas versiones de las funciones y los scripts. Si una función tiene un comando roto, puede que no se cargue el archivo entero, así que revisa el registro de contenido en busca de errores. Consulta Solución de problemas.

Bloques de comandos

Los bloques de comandos ejecutan un comando cuando reciben energía, directamente en tu mundo. Son perfectos para mapas, minijuegos y pruebas. Las funciones son mejores para los complementos, porque viajan con tu paquete en lugar de vivir en un solo mundo.

Cómo conseguir uno

Los bloques de comandos no están en el inventario creativo. Usa:

Chat
/give @s minecraft:command_block

Colócalo y tócalo o haz clic derecho sobre él para abrir sus ajustes. Escribe un comando en el cuadro, sin la barra.

Los tres tipos

TipoColorQué hace
ImpulsoNaranjaSe ejecuta una vez cada vez que recibe energía
CadenaVerdeSe ejecuta justo después del bloque que apunta hacia él
RepeticiónMoradoSe ejecuta en cada tick mientras tiene energía

Ajustes principales

  • Tipo de bloque: Impulso, Cadena o Repetición.
  • Condición: Incondicional se ejecuta siempre. Condicional solo se ejecuta si el bloque de detrás tuvo éxito.
  • Redstone: Necesita redstone espera una señal de un botón, una palanca o redstone. Siempre activo se ejecuta sin ella.
  • Retraso en ticks: espera ese número de ticks antes de ejecutarse.

Ejemplo: un botón de teletransporte

  1. Coloca un bloque de comandos de Impulso configurado como Necesita redstone, con: tp @p 0 100 0
  2. Ponle un botón de piedra.
  3. Pulsa el botón: el jugador más cercano sale volando a 0 100 0.

Ejemplo: una cadena

Los bloques de comandos tienen una flecha en los lados que indica hacia dónde apuntan. Un bloque de cadena colocado donde apunta la flecha se ejecutará a continuación.

  1. Repetición, Siempre activo: testfor @a[r=5]
  2. Un bloque de Cadena delante, Condicional, Siempre activo: effect @a[r=5] minecraft:regeneration 2 0 true

Ahora cualquier jugador a menos de 5 bloques se cura, pero solo mientras haya alguien cerca. /testfor tiene éxito si encuentra a alguien, y el bloque de cadena condicional solo se ejecuta cuando hay éxito.

¿Función o bloque de comandos?

Un bloque de comandos también puede ejecutar una función entera: escribe function myname/arena/start en él. Así la lógica vive en tu complemento y el bloque es solo el botón.

Qué sigue

Comandos: Guías

Conceptos básicos de los comandos ·Funciones y bloques de comandos

We use cookies to improve your experience and analyse site traffic. Learn more