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, abrí File → Plugins → Load Plugin from URL.
  2. Pegá el siguiente link y confirmá:
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 — Conectate al servidor y enviá cambios en tiempo real mientras editás.

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 podés 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)

Creá un cubo de texto desde Add Element → Text Display en el outliner. Para editar uno existente, hacé 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

Importá 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. Seleccioná 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. Podés 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 usá el botón Save Layer que aparece en el panel Collections, o Ctrl+S con la capa seleccionada.

Animaciones

Podés 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 usá 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.
  • Podés 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

Importá una textura PNG (o extraela 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, hacé clic en Import Texture Layer (ícono de textura).
  2. Seleccioná 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.

Activá 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.. Creá estas animaciones en tu .animation.json con los nombres exactos y registrá 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). Podés 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 configurás 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. Podés 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 — seleccioná 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, ejecutá /animorph socket <jugador> connect.
  2. En Blockbench, abrí Tools → Remote Sync Settings.
  3. Configurá el host (por defecto localhost) y el puerto (por defecto 8765).
  4. Hacé clic en Connect.

Una vez conectado, podés activar Auto-sync on changes para que los cambios se envíen solos cada vez que editás el modelo. También podés 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 usás 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

Podés 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 usás un mod de permisos como LuckPerms, podés 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í podés 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