Saltar al contenido principal

Modelos Personalizados

EliteMobs soporta Modelos Personalizados a través de Model Engine y FreeMineCraftModels.

Prefacio

Desde la perspectiva de EliteMobs, el sistema de Modelos Personalizados es muy simple, ya que lo único que los administradores tienen que hacer es añadir una línea al archivo de configuración de un NPC o Jefe Personalizado indicándole qué Modelo Personalizado usar. Sin embargo, es necesario tomar los pasos correctos con Model Engine y Minecraft para que este sistema funcione plenamente, y estos no son tan fáciles de abordar.

Esta guía entrará en detalle en cuanto a la interfaz con Model Engine y Minecraft. No te dirá cómo usar Blockbench para crear jefes personalizados, ni entrará en detalle sobre cómo funciona Model Engine. Ya hay muchas guías sobre cómo hacer eso en otros lugares, y si quieres aprender más sobre esos sistemas, te conviene más mirar directamente su documentación.

FreeMineCraft Models​

Si quieres aprender cómo puedes usar FMM para que tus modelos funcionen, puedes consultar esta página de la wiki para aprender más.

Etiquetas de nombre de los modelos

El FreeMinecraftModels actual usa un hueso tag_ definido por el autor, como tag_head, cuando existe; si no, coloca el nombre sobre la caja de colisión del modelo. El anclaje permite elegir la posición, pero ya no es obligatorio para mostrar un nombre. FMM gestiona toda la etiqueta, incluidas las líneas de nombre y función de los NPC de EliteMobs. Las versiones antiguas de FMM pueden seguir necesitando un anclaje.

Soporte para Bedrock (Geyser)​

Que los jugadores de Bedrock (que se conectan a través de Geyser/Floodgate) puedan ver los modelos personalizados depende enteramente de tu plugin de modelos (ModelEngine o FreeMinecraftModels) y de la configuración de tu resource pack, no de EliteMobs. EliteMobs sí detecta a los clientes de Bedrock, pero usa esa información para cosas como el renderizado de menús y la posición de las etiquetas de nombre — no genera ni sirve un modelo separado compatible con Bedrock. Consulta la documentación de tu plugin de modelos para conocer el soporte de modelos para Bedrock/Geyser.

Integración con LibsDisguises​

EliteMobs también admite LibsDisguises como alternativa a los modelos personalizados. Un modelo configurado y disponible tiene prioridad sobre un disfraz; si no se selecciona un modelo utilizable, se puede usar el disfraz configurado. La integración sincroniza la visibilidad del nombre.

Para usar LibsDisguises en lugar de modelos personalizados, configura el disfraz del jefe/NPC sin especificar customModel.

Modelos de objetos y armas mágicas (FMM)

Usa fmmItemModel para la presentación de objetos con FMM, junto con weaponType: WANDS o weaponType: STAVES para un arma mágica definida por su autor. EliteMobs conserva el nombre, lore, encantamientos y nivel. FMM aporta el modelo y, para armas mágicas, la definición del ataque.

El antiguo puente scriptedItem sigue disponible para la identidad y apariencia del objeto. Ya no ejecuta scripts Lua de objetos equipados, y FMM rechaza definiciones de objetos con una lista scripts no vacía. No lo combines con un arma mágica definida por su autor.

# Example EliteMobs custom item config
material: IRON_SWORD
name: "&cFlame Blade"
enchantments:
- "FIRE_ASPECT,2"
scalability: scalable
fmmItemModel: flame_blade

El objeto o modelo de FMM referenciado debe existir. Si falta un modelo de presentación, puede quedar visible el material vanilla y registrarse una advertencia; un weaponType explícito que no coincida con un arma definida y disponible impide construir el objeto. Consulta las armas mágicas de FMM y la configuración de objetos personalizados.

Requisitos mínimos

EliteMobs, una versión compatible de FreeMinecraftModels o una integración con ModelEngine*, Blockbench** y un paquete de recursos de Minecraft. La integración con ModelEngine usa la API R3: EliteMobs solo la selecciona cuando ModelEngine está habilitado y su versión contiene R3. Una versión mayor más reciente no es compatible automáticamente.

* Este plugin puede tener más dependencias. Consulta la documentación de su lado.
** Necesario para crear y editar Modelos Personalizados. No es necesario si solo quieres instalar contenido sin modificarlo.

Prioridad de Plugins

Si tanto ModelEngine como FreeMinecraftModels están instalados, EliteMobs usará FreeMinecraftModels por defecto. Solo un plugin de modelos personalizados estará activo a la vez.

Configurar manualmente un Modelo Personalizado

Nota: Esta guía asume que ya tienes un Modelo Personalizado válido. Estos vienen en formatos de archivo de Blockbench (.bbmodel).

EliteMobs es capaz de usar Modelos Personalizados para NPCs y Jefes Personalizados. El proceso para hacer esto es el mismo para ambos, y es el siguiente:

Paso 1. Configurar el archivo de configuración de EliteMobs​

Ve al archivo de configuración del Jefe Personalizado o NPC que quieras modificar y añade la siguiente línea:

customModel: modelname

Reemplaza modelname con el nombre de tu modelo. El nombre es el nombre del archivo del Modelo Personalizado que estás usando. Como ejemplo, el archivo del Modelo Personalizado del Test Boss es showcase_boss.bbmodel. Por lo tanto, la opción de configuración debe ser

customModel: showcase_boss

¡Y eso es todo para EliteMobs! Ahora se vuelve un poco más complicado.

Paso 2. Generar los datos de Model Engine​

Las rutas siguientes proceden de la guía archivada de importación de ModelEngine. Sigue las instrucciones de tu versión instalada de ModelEngine.

  1. Coloca el archivo Blockbench del modelo (.bbmodel) en (yourServer)/plugins/ModelEngine/blueprints.
  2. Ejecuta el comando de recarga de modelos de tu versión de ModelEngine; la guía archivada usa /meg reload models. Confirma que el modelo aparece en el registro cargado y revisa los errores de consola.

Paso 3. Distribuir el Resource Pack​

Esta es posiblemente la parte más complicada si buscas que el servidor gestione las descargas. ¡Intenta comprobar si el sistema funciona cuando tienes el resource pack en tu cliente antes de mirar cómo distribuirlo automáticamente!

  1. Ve a (yourServer)/plugins/ModelEngine/resource pack y crea un paquete con esos datos o añade su carpeta assets a la de tu paquete.
    1. Para un paquete nuevo, coloca assets y un pack.mcmeta válido en la raíz del ZIP. Usa metadatos compatibles con el cliente; no copies los números de formato antiguos de los ejemplos archivados. Más información.
    2. Si ya tienes un resource pack, asegúrate de no estar sobrescribiendo accidentalmente modelos existentes. Más información.
  2. Distribuye tu resource pack a tus jugadores. Solo los jugadores que tengan el resource pack podrán ver los Modelos Personalizados, y se verá muy raro y roto para todos los demás. Si tienes la intención de hacer un uso intensivo de estos, es posible que quieras forzar el uso del resource pack.
    1. (Opcional) Para permitir que los jugadores descarguen un resource pack al iniciar sesión, necesitarás alojar el archivo en algún lugar en línea y cambiar el campo resource-pack= en server.properties para que apunte a esa dirección.*
    2. Para las descargas automáticas, establece resource-pack-sha1= con el SHA-1 del ZIP final. Calcúlalo localmente en PowerShell con (Get-FileHash -LiteralPath "pack.zip" -Algorithm SHA1).Hash.ToLowerInvariant() o en Linux con sha1sum pack.zip. Copia solo el hash de 40 caracteres y actualízalo cada vez que cambie el ZIP.
    3. (Opcional) Para forzar a los jugadores a usar resource packs, usa la opción require-resource-pack=true en server.properties.*

¡Si modificaste server.properties tendrás que reiniciar!

* Nota: Hay muchas guías en línea que pueden ayudarte a hacer que esto funcione si estas instrucciones no te están ayudando.

Combinar resource packs​

Puedes combinar paquetes manualmente o usar ResourcePackManager para el flujo de paquetes de Nightbreak. Una herramienta externa como merge.elmakers puede combinar ZIP, pero debes resolver los ID de modelo en conflicto y verificar el paquete combinado en el cliente de destino.

Paso 4. Verificar el modelo​

Con el registro de modelos cargado y el paquete correspondiente aplicado en el cliente, verifica el modelo en un jefe o NPC real. Estos comandos requieren un jugador y su permiso correspondiente:

  • Jefe personalizado: /em spawn boss filename.yml — elitemobs.place.admin, aparece en la posición que estás mirando.
  • NPC: /em place npc filename.yml — elitemobs.place.npc, guarda una colocación permanente donde estás de pie.

/em remove alterna el modo de eliminación. Golpea al objetivo para eliminarlo y vuelve a ejecutar el comando para salir del modo. Eliminar así un NPC colocado también borra su colocación guardada.

Crear y adaptar Modelos Personalizados para EliteMobs

Usa un modelo compatible y cargado correctamente por el proveedor seleccionado. Siguen aplicándose la compatibilidad del proveedor y las funciones de modelo que admite.

Sin embargo, cuando se trata de animaciones, se requiere el uso de nombres específicos para las animaciones para garantizar que los jefes puedan usar las animaciones.

Estos nombres de animación son los que se establecen en Blockbench en la pestaña de animaciones. Puedes renombrarlos en cualquier momento, lo que significa que puedes adaptar cualquier modelo existente para que funcione con EliteMobs.

Animaciones​

Usa los siguientes nombres de animación para los hooks automáticos de EliteMobs.

idle​

idle es el nombre convencional de la animación de reposo. EliteMobs inicia un modelo de ModelEngine en su estado de reposo predeterminado; la selección posterior de animaciones de reposo y movimiento corresponde al proveedor.

walk​

walk es el nombre convencional de la animación de movimiento. EliteMobs no inicia explícitamente esa animación al adjuntar el modelo; la selección corresponde a ModelEngine/FMM.

attack​

Hay tres tipos de animaciones de ataque:

attack​

attack es el nombre correcto de la animación genérica para cuando un jefe ataca.

attack_melee​

attack_melee sustituye a attack cuando un jefe personalizado es el causante directo en un evento de daño entre entidades de Bukkit. La animación se solicita durante el procesamiento del evento; no es una preparación que retrase el golpe. Se ignoran los eventos ya cancelados, pero un listener posterior todavía puede cancelar el daño. Usa una animación breve y no dependas de ella para programar el daño.

attack_ranged​

attack_ranged sustituye a attack cuando el evento de aparición de un proyectil identifica como tirador a un jefe personalizado vivo. Responde a la aparición del proyectil, sin retrasar el disparo hasta terminar la animación. Los proyectiles sin esa asociación de tirador no activan este hook automático.

Sistema de fallback de animaciones​

EliteMobs usa un sistema de fallback para las animaciones de ataque:

  • Si attack_melee no está definido, recurre a attack
  • Si attack_ranged no está definido, recurre a attack
  • FMM comprueba que attack exista antes de reproducirla; el adaptador de ModelEngine pasa ese nombre alternativo a su gestor de animaciones

Esto te permite crear una única animación de ataque que funcione para todos los tipos de ataque, o crear animaciones especializadas para ataques melee vs a distancia.

damaged​

aviso

EliteMobs no registra un hook automático para damaged. El tinte de daño u otras respuestas visuales del proveedor son independientes de reproducir esa animación.

death​

En EliteMobDeathEvent, EliteMobs solicita death en el modelo del jefe personalizado si existe esa animación. La eliminación y los cambios de fase no equivalen a un evento de muerte. La reproducción y la limpieza del modelo siguen dependiendo del ciclo de vida del proveedor.

powers​

aviso

No hay una asociación automática entre los nombres de poderes y los nombres de animaciones del modelo.

Ya puedes reproducir una animación desde un poder

Aunque no hay asociación automática, ambos sistemas de scripts permiten iniciar una animación explícitamente por su nombre:

  • EliteScript: la acción PLAY_ANIMATION, usando el nombre de animación como valor. Resuelve cada objetivo como jefe personalizado y reproduce la animación en su modelo.
  • Lua: context.boss:play_model_animation("animation_name").

En ambos casos, se omite silenciosamente si el modelo no tiene esa animación o si el jefe no tiene modelo personalizado.

Importar Modelos Personalizados desde mazmorras

Paso 1. Importación normal​

Al importar una carpeta comprimida del empaquetador de mazmorras que contiene Modelos Personalizados, los Modelos Personalizados se mueven al plugin de modelos que esté instalado:

  • Con FreeMinecraftModels instalado — los modelos van a (yourServer)/plugins/FreeMinecraftModels/models (o a la carpeta antigua Models si ya existe), y los archivos .bbmodel se convierten a .fmmodel durante el proceso. EliteMobs lanza entonces un evento de instalación de modelos para que FMM reconstruya su registro de modelos.
  • Solo ModelEngine instalado — los modelos van a (yourServer)/plugins/ModelEngine/blueprints. El importador compartido actual no recarga ModelEngine automáticamente; reconstruye sus modelos y paquete con el comando de esa versión.
Primer arranque después de instalar un DLC

Cuando una importación inicia una reconstrucción de modelos de FMM, EliteMobs espera hasta 300 segundos (cinco minutos) a que FMM alcance el estado inicializado. Un FMM fallido o deshabilitado, el agotamiento del tiempo o una espera interrumpida detienen la inicialización de EliteMobs antes de cargar modelos y objetos incompletos. Revisa los errores de ambos plugins, resuelve el problema y reinicia; no es un arranque correcto que simplemente omita algunas entidades con modelo.

Paso 2. Resource Pack​

EliteMobs exporta su paquete integrado a (yourServer)/plugins/EliteMobs/resource_pack/em_rsp_defaults al arrancar y guarda .rsp_checksum en la carpeta superior. Omite la copia si la suma del paquete incluido coincide con la guardada y existe em_rsp_defaults. Un cambio de versión no fuerza la exportación, y la coincidencia de sumas no comprueba cambios locales o borrados en cada archivo exportado. La sustitución usa un intercambio de directorios preparado previamente; guarda tus cambios propios fuera de esta carpeta generada.

Tendrás que combinar estos archivos de resource pack con los archivos de resource pack de Model Engine y distribuir el resource pack combinado a tus jugadores. Solo los jugadores que tengan el resource pack podrán ver los Modelos Personalizados.

Resolución de problemas

Problemas comunes:

  1. El modelo no es visible:

    • Verifica que el registro del proveedor seleccionado contenga el modelo; usa el comando de recarga de ese proveedor y versión
    • Comprueba que el resource pack esté instalado en el cliente
    • Asegúrate de que customModel coincida con el ID registrado, normalmente el nombre del archivo sin extensión
  2. Las animaciones no se reproducen:

    • Verifica que los nombres de las animaciones en Blockbench coincidan exactamente con los nombres documentados
    • Comprueba que las animaciones no estén configuradas para hacer loop si deben reproducirse una vez
    • Prueba cada animación con los comandos del proveedor seleccionado
  3. Ambos plugins instalados:

    • EliteMobs usará FreeMinecraftModels si ambos están presentes
    • No hay un selector de proveedor por modelo. Para usar ModelEngine en su lugar, desactiva FreeMinecraftModels y usa una versión R3 de ModelEngine
  4. El jefe o NPC no muestra ningún nombre (FMM):

    • Comprueba primero name, el ajuste alwaysShowName del jefe y la carga del modelo.
    • El FMM actual coloca el nombre sobre la caja de colisión si no hay anclaje tag_. Si aparece mal colocado, revisa la altura de la caja o añade un anclaje al modelo.
    • Los modelos de NPC se vuelven a adjuntar cuando FMM emite su evento de recarga completada. Revisa las advertencias de consola si desaparece un modelo tras recargar FMM.