Configuración de modelo

Referencia completa de un archivo .yml en plugins/Animorph/models/. El .geo.json se detecta automáticamente por nombre de archivo.

yaml plugins/Animorph/models/mi_modelo.yml
display_name: Mi Modelo
texture: mi_modelo.png
animation: mi_modelo.animation.json

properties:
  is_layer: false                 # true si es una capa, no un modelo base
  animation_controllers:
    - idle
    - simple_pose
    - emote
    - arm_right
    - arm_left
    - arms
  first_person:
    show_equipment: true          # mostrar armadura en primera persona
    model:
      show: true                  # mostrar cuerpo completo en primera persona
      offset:
        x: 0
        y: 0
        z: 0
    custom_arms:
      show: true                  # brazos del modelo en primera persona
      custom_render_items: true   # renderizar ítems a través de las manos
      both_hands: true            # mostrar mano derecha e izquierda
  texts:
    '{health}': '%player_health%'
    '{name}': '%player_display_name%'

equipment:
  head:   player_equipment/helmet.geo.json
  chest:  player_equipment/chestplate.geo.json
  legs:   player_equipment/leggings.geo.json
  feet:   player_equipment/boots.geo.json
  cape:   player_equipment/cape.geo.json
  elytra: player_equipment/elytra.geo.json

layers:
  overlay:
    type: TEXTURE
    texture: overlay.png
    show_first_person: true
  accessory:
    type: model
    model: accessory_model
    show_first_person: false

Configuración de animaciones y emotes

Cada emote o animación especial tiene su propio archivo YAML en plugins/Animorph/animations/.

El nombre del fichero (sin la extensión .yml) es el ID del emote que se usa en los comandos y la API. Por ejemplo, el archivo wave.yml se invoca con /animorph emote wave @a.

yaml plugins/Animorph/animations/wave.yml
animation: wave.animation.json
freeze: false
stop:
  on_death: true
  on_hurt: false
controllers_exceptions:
  - arm_right
  - arm_left

Conversión desde EmoteCraft

Si tienes animaciones en formato EmoteCraft, puedes convertirlas al formato nativo de Animorph:

  1. Asegúrate de que el plugin EmoteCraft está instalado y la animación está registrada en él.
  2. Ejecuta: /animorph emote-parser <id_emote_emotecraft>
  3. El archivo convertido se guarda en plugins/Animorph/animations/parser/.
  4. Crea un YAML referenciando ese archivo y recarga con /animorph reload.

Controladores BlockBench

Los controladores de animador BlockBench son máquinas de estados que evalúan condiciones Molang para determinar qué animación reproducir.

Cómo usarlos

  1. En Blockbench, crea un Animation Controller en la pestaña de animaciones.
  2. Exporta el controlador como JSON y colócalo en plugins/Animorph/controllers/.
  3. Referéncialo en el modelo añadiéndolo a animation_controllers con el nombre del fichero sin extensión (precedido por bb_ no es obligatorio, solo es la convención).
yaml Referencia en el modelo
properties:
  animation_controllers:
    - idle
    - simple_pose
    - mi_controlador    # nombre del archivo JSON sin extensión

Coloca el archivo en:

plaintext
plugins/Animorph/controllers/mi_controlador.json

Estructura del controlador

json plugins/Animorph/controllers/mi_controlador.json
{
  "format_version": "1.10.0",
  "animation_controllers": {
    "controller.animation.mi_controlador": {
      "initial_state": "idle",
      "states": {
        "idle": {
          "animations": ["idle"],
          "transitions": [
            { "walking": "query.limb_swing_amount > 0.1" }
          ]
        },
        "walking": {
          "animations": ["pose.standing"],
          "transitions": [
            { "idle": "query.limb_swing_amount < 0.1" }
          ]
        }
      }
    }
  }
}