Docs / Plugin de Blockbench

Plugin de Blockbench

Animorph incluye un plugin para Blockbench que simplifica la creación de modelos y emotes, y te permite enviar cambios al servidor en tiempo real sin guardar ni copiar archivos manualmente.

Instalación

  1. En Blockbench, abre File → Plugins → Load Plugin from URL.
  2. Pega el siguiente link y confirma:
plaintext
https://raw.githubusercontent.com/feeldev12/animorph-blockbench/refs/heads/main/animorph-tools.js
Nota
El plugin solo necesita cargarse una vez. Blockbench lo recuerda entre sesiones.

Funcionalidades

  • Loop Start — Marcador visual en el timeline para definir desde dónde loopeará la animación en GeckoLib.
  • Mesh Support — Exporta e importa meshes en formato poly_mesh compatible con Bedrock y GeckoLib.
  • Text Display — Crea y configura cubos de texto 3D directamente desde Blockbench, sin editar el JSON a mano.
  • Layers de modelo — Importa modelos externos como capas editables con sus propias animaciones.
  • Layers de textura — Importa una textura como overlay encima del modelo base para previsualizarla.
  • Primera persona — Vista de cámara en primera persona para previsualizar las animaciones de brazos.
  • Exportar configuración — Dialogs para generar el .yml del modelo y de emotes sin salir de Blockbench.
  • Sincronización en vivo — Conéctate al servidor y envía cambios en tiempo real mientras editas.

Loop Start

GeckoLib soporta la propiedad loop_start para que una animación no repita desde el principio sino desde un punto específico. El plugin agrega un marcador arrastrable en el timeline para definir ese punto visualmente.

Para usarlo: click derecho sobre la animación en el panel de animaciones → Properties. El campo Loop Start Time aparece solo cuando el modo de loop está en loop. Una vez definido, el marcador aparece en el timeline y puedes arrastrarlo directamente.

  • Se exporta automáticamente al guardar como .animation.json.
  • Compatible con Undo/Redo.

Mesh Support

Habilita el uso de meshes (mallas) en formatos Bedrock y GeckoLib. Al exportar el modelo, las meshes se convierten al formato poly_mesh que Minecraft puede leer. Al importar, el proceso es inverso.

Opciones de exportación

Se configuran en File → Preferences → Settings → Animorph.

OpciónDescripción
Normalize Mesh UVsNormaliza las UVs al rango 0–1. Activalo si el modelo se ve mal en el juego.
Skip Mesh NormalsOmite el cálculo de normales (más rápido, pero puede verse plano con cierta iluminación).
Force Multi-TexturesPermite usar más de una textura en formatos Bedrock.

Text Display (cubos de texto)

Crea un cubo de texto desde Add Element → Text Display en el outliner. Para editar uno existente, haz click derecho sobre el cubo → Edit Text Display.

PropiedadDescripción
ContentTexto a mostrar. Puede ser fijo o un placeholder como {name}.
ColorColor del texto, con soporte de transparencia.
BackgroundColor de fondo (opcional).
AlignmentAlineación: izquierda, centro o derecha.
PaddingEspaciado interno.
Consejo
El tamaño y la posición del cubo en Blockbench determinan dónde y cómo aparece el texto en el juego. Para más detalles sobre placeholders dinámicos, ver Cubos de texto en Modelos.

Layers de modelo

Importa un archivo .bbmodel o .geo.json como una capa de modelo independiente dentro de tu proyecto. A diferencia de simplemente abrir otro archivo, la capa vive dentro del proyecto actual y puede tener sus propias animaciones.

Cómo importar

  1. En el menú Tools → Import Layer.
  2. Selecciona el .bbmodel o .geo.json del modelo layer.
  3. La capa aparece en el panel Collections con su propio grupo de huesos.

Edición

Los huesos y cubos de un layer de modelo son editables. Puedes moverlos, escalarlos, agregar cubos y animarlos exactamente igual que el modelo principal. El layer tiene su propio archivo fuente separado.

Para guardar los cambios en el archivo fuente usa el botón Save Layer que aparece en el panel Collections, o Ctrl+S con la capa seleccionada.

Animaciones

Puedes crear animaciones que muevan los huesos del layer. Estas animaciones corresponden al .animation.json del layer, que en el servidor es el archivo declarado bajo animation: en el .yml del modelo layer.

Para exportar la animación de un layer usa Export Layer Animations desde el menú contextual del Collection.

Visibilidad y exportación

  • Toggle de visibilidad por capa desde el panel Collections.
  • Las capas no se incluyen al exportar el modelo principal — cada layer tiene su propio .geo.json.
  • Puedes recargar una capa desde su archivo fuente con Reload Layer.
Consejo
Para que un modelo funcione como layer en el servidor, su .yml debe tener is_layer: true. Ver Layers en Modelos.

Layers de textura

Importa una textura PNG (o extráela de un .bbmodel / .geo.json) para verla como overlay encima del modelo sin reemplazar la textura base. El plugin crea clones de todos los cubos del modelo base con una leve expansión y les aplica la textura importada.

Cómo importar

  1. En el panel Collections, haz clic en Import Texture Layer (ícono de textura).
  2. Selecciona un archivo .png, .bbmodel o .geo.json.
  3. El overlay aparece como una nueva entrada en Collections con el prefijo TL:.

Controles

AcciónDescripción
Toggle VisibilityMuestra u oculta el overlay sin eliminarlo.
Solo (ícono de diana)Oculta los cubos base para ver solo la textura del layer. Útil para ajustar UVs de overlays.
ReloadRecarga la textura desde el archivo fuente original.
DeleteElimina el overlay y sus cubos clonados.
Nota
Los cubos del overlay se excluyen automáticamente al exportar el modelo. Son solo para previsualización — el servidor aplica la textura en runtime.

Primera persona

El plugin agrega una vista de cámara en primera persona dentro de Blockbench para previsualizar las animaciones de brazos exactamente como se verán en Minecraft.

Cómo activarla

Menú View → First Person View. Al activarla:

  • La cámara se fija al nivel de los ojos del modelo (lee la posición del hueso head).
  • El FOV se establece en 70, igual que Minecraft.
  • Todo el modelo se oculta excepto los brazos: left_arm, right_arm, left_hand, right_hand, left_sleeve, right_sleeve y sus hijos.
  • La rotación de la cámara se bloquea mirando hacia adelante.

Activa una animación de brazos (fp.arm_right.hold, fp.arms.swing, etc.) y vas a ver exactamente cómo quedará in-game.

Nombres de animación para primera persona

Las animaciones de brazos en primera persona usan el prefijo fp.. Crea estas animaciones en tu .animation.json con los nombres exactos y registra los controladores en fp_animation_controllers en el .yml del modelo. Ver referencia completa en Nombres de animación.

Consejo
Si tu modelo no tiene un hueso llamado head, la cámara usa la posición por defecto (altura de ojos estándar). Puedes ajustar la posición del hueso head para mover el punto de vista.

Exportar configuración

El plugin incluye dos dialogs para generar los archivos .yml del servidor sin salir de Blockbench.

Model Config (.yml)

Tools → Model Config abre un panel donde configuras todo lo del modelo: nombre, archivo de animación, primera persona, controllers, textos, equipamiento y layers. Al presionar Export .yml genera el archivo listo para poner en plugins/Animorph/models/.

El botón Detect en la sección Layers detecta automáticamente los layers de modelo y textura que tengas cargados en el proyecto y los agrega a la config.

Emote Config (.yml)

Desde el panel de animaciones, click derecho sobre el archivo de animación (el nombre del .animation.json) → Emote Config. Puedes configurar propiedades para todo el archivo o para una animación individual:

  • Global — propiedades que aplican a todas las animaciones del archivo (freeze, stop on death/hurt).
  • Por animación — selecciona una animación específica para configurar sus controller_exceptions y layer_emotes individualmente.

Al guardar genera el .yml del emote listo para poner en plugins/Animorph/animations/.

Sincronización en vivo

El plugin puede conectarse al servidor para enviar los archivos (modelo, animación y textura) directamente desde Blockbench. Los cambios se guardan en el servidor y se recargan en el juego sin reiniciar.

Advertencia
La sincronización en vivo es solo para desarrollo local. No la uses en servidores de producción.

Cómo conectar

  1. En el servidor, ejecuta /animorph socket <jugador> connect.
  2. En Blockbench, abre Tools → Remote Sync Settings.
  3. Configura el host (por defecto localhost) y el puerto (por defecto 8765).
  4. Haz clic en Connect.

Una vez conectado, puedes activar Auto-sync on changes para que los cambios se envíen solos cada vez que editas el modelo. También puedes usar Sync Now para enviar todo manualmente de una sola vez.

Dónde se guardan los archivos

Los archivos se guardan automáticamente en la carpeta del servidor según su tipo. La ruta se configura desde el plugin antes de conectar. Por ejemplo, si usas la ruta entity/player:

plaintext Estructura en el servidor
plugins/Animorph/
├── models/entity/player.geo.json
├── animations/entity/player.animation.json
└── textures/entity/player.png

Puedes organizar los archivos en subcarpetas como quieras: entity/mobs/zombie, custom/npcs/villager, etc.

Servidor Fabric
En el servidor Fabric, la ruta base es config/animorph/ en lugar de plugins/Animorph/. El resto de la estructura es idéntica.

Permisos

Para guardar archivos desde Blockbench, el jugador necesita permisos en el servidor. Los permisos se basan en la primera carpeta de la ruta configurada. Por ejemplo, si la ruta es entity/player, la carpeta de permiso es entity.

PermisoQué permite
animorph.blockbench.save.entityGuardar archivos nuevos en la carpeta entity.
animorph.blockbench.save.*Guardar archivos nuevos en cualquier carpeta.
animorph.blockbench.overwrite.entitySobreescribir archivos existentes en la carpeta entity.
animorph.blockbench.overwrite.*Sobreescribir archivos existentes en cualquier carpeta.
Consejo
En Fabric, se necesita ser op nivel 4 para guardar archivos. Si usas un mod de permisos como LuckPerms, puedes usar los mismos nodos de permiso que en Bukkit.

Historial de cambios

Cada vez que alguien guarda un archivo desde Blockbench, queda registrado en blockbench-saves.log. Así puedes ver quién modificó qué y cuándo.

plaintext blockbench-saves.log
[2026-03-27 14:30:15] Steve created model 'models/entity/player.geo.json'
[2026-03-27 14:30:16] Steve created animation 'animations/entity/player.animation.json'
[2026-03-27 14:30:16] Steve created texture 'textures/entity/player.png'
[2026-03-27 14:45:02] Steve overwritten model 'models/entity/player.geo.json'

Ubicación del archivo:

  • Bukkit/Paper: plugins/Animorph/blockbench-saves.log
  • Fabric: config/animorph/blockbench-saves.log