Saltar al contenido principal

Preguntas frecuentes de FreeMinecraftModels

Si tienes una pregunta que no está listada aquí, echa un vistazo a la barra lateral para ver si tiene una página dedicada en el wiki.

Empezando

¿Cómo instalo y uso FreeMinecraftModels?​

Información

Instalación:

  1. Descarga FreeMinecraftModels.jar y colócalo en tu carpeta de plugins
  2. Reinicia tu servidor para generar las carpetas del plugin
  3. Ejecuta /fmm setup para el menú de configuración inicial / gestión de contenido por primera vez
  4. Si usas paquetes de contenido oficiales, vincula Nightbreak con /nightbreaklogin <token>
  5. Usa /fmm setup o /fmm downloadall para el contenido oficial gestionado por Nightbreak
  6. Para modelos sueltos, coloca archivos con extensión .bbmodel en minúsculas directamente en ~/plugins/FreeMinecraftModels/imports/ y ejecuta /fmm reload. Los modelos con archivos asociados necesitan la carpeta activa de modelos o una importación empaquetada; consulta Creación de modelos
  7. Encuentra el resource pack generado en ~/plugins/FreeMinecraftModels/output/FreeMinecraftModels.zip

Distribuyendo el Resource Pack:

Elige uno de estos métodos:

  • Opción A (Recomendada): Instala Resource Pack Manager para distribución automática
  • Opción B: Configura manualmente vía server.properties o un servicio de hosting

Generando Modelos:

  • /fmm spawn static <id> - Genera un modelo decorativo temporal
  • /fmm spawn dynamic <id> - Genera un modelo adjunto a una entidad
  • /fmm spawn prop <id> - Genera un modelo persistente en el mundo

Gestión:

  • /fmm - Abrir el menú de objetos fabricables (requiere freeminecraftmodels.menu)
  • /fmm setup - Abrir el menú de gestión de contenido / configuración inicial
  • /fmm recommendedplugins - Explorar plugins complementarios que combinan bien con FMM
  • /fmm downloadall - Descargar la última actualización del plugin y después el contenido accesible ausente o desactualizado; el jar entra en vigor tras un reinicio o con /fmm applypluginupdate
  • /fmm downloadallcontent - Descargar contenido accesible ausente o desactualizado sin el jar del plugin
  • /fmm updatecontent - Actualizar contenido oficial desactualizado
  • /fmm downloadpluginupdate - Descargar únicamente la última actualización del jar del plugin
  • /fmm applypluginupdate - Aplicar una actualización del plugin ya descargada sin reiniciar el servidor
  • /fmm forcereinstallcontent <package|all> - Volver a descargar el contenido seleccionado independientemente de su versión; usa directamente el slug si falta por completo un paquete
  • /fmm reload - Recargar el plugin y convertir nuevos modelos
  • /fmm version - Mostrar la versión del plugin
  • /fmm stats - Mostrar estadísticas de conteo de entidades
  • /nightbreaklogin <token> / /nightbreaklogout - Comandos principales compartidos de MagmaCore para guardar y borrar el token de la cuenta de Nightbreak (permiso: nightbreak.login)
  • /freeminecraftmodelschangelog [dismiss|disable] - Leer las notas de versión pendientes de FMM dentro del juego (solo administradores; también se ofrecen mediante un mensaje con enlace al conectarse)

Funciones de Jugador:

  • /fmm disguise <modelID> [player] - Transforma tu apariencia (o la de un jugador objetivo) en un modelo personalizado
  • /fmm undisguise [player] - Eliminar el disfraz de un jugador
  • /fmm disguiselist - Listar todos los jugadores actualmente disfrazados
  • /fmm itemify <model> <material> - Crear un objeto colocable que genera el modelo especificado
  • /fmm craftify <modelID> - Abrir un constructor interactivo de recetas para crear una receta de fabricación para un prop
  • /fmm shop - Abrir la tienda de muebles opcional respaldada por Vault (solo cuando esté habilitada en shop_config.yml)
  • /fmm mount <modelID> - Generar un caballo montable disfrazado como un modelo personalizado (experimental)

Depuración:

  • /fmm hitbox visualize [duration] - Visualizar hitboxes cercanas con partículas durante un número de ticks (100 por defecto, los valores no positivos usan 100, máximo 1200)
  • /fmm location - Informar sobre los proveedores de protección/mazmorra registrados y probarlos en tu ubicación actual
  • /fmm debug bedrock [on|off] - Establecer el registro detallado [FMM-BedrockDebug], o informar de su estado si no se indica ninguno. Se conserva con /fmm reload y empieza desactivado al arrancar el servidor
  • /fmm debug props [on|off] - Activar diagnósticos de props superpuestos al iniciar, cargar entidades y comprobar antes de generar, o informar de su estado. Se conserva con /fmm reload; un nuevo arranque lo restablece
  • /fmm packetdebug [ticks] - Muestrear la carga de paquetes durante los ticks del reloj de modelos indicados (1 por defecto, rango 1–200; entrada inválida: 1), con paquetes por tick, difusión por espectador, espectadores con mayor carga y desglose por tipo
  • /fmm filmic [on|off] - Enviar temporalmente cada modelo cargado a todos los jugadores que tengan cargado su chunk, para grabaciones con ReplayMod. No se recomienda fuera de las grabaciones. Consulta modo fílmico

Administrativos:

  • /fmm deleteall [radius] - Eliminar todas las entidades modeladas cargadas y los props (usar con precaución - sin diálogo de confirmación). Un [radius] opcional solo para jugadores limita la eliminación a esa cantidad de bloques

Permisos:

  • freeminecraftmodels.* (predeterminado: OP) - Comodín que otorga freeminecraftmodels.admin, freeminecraftmodels.deleteall, freeminecraftmodels.disguise.self, freeminecraftmodels.disguise.others y freeminecraftmodels.bypassregionprotection. También es el permiso literal requerido por /fmm reload, /fmm stats, /fmm spawn, /fmm itemify, /fmm craftify, /fmm mount, /fmm hitbox visualize, /fmm debug, /fmm packetdebug, /fmm filmic, /fmm location, /fmm setup, /fmm initialize, /fmm recommendedplugins, /fmm downloadall, /fmm downloadallcontent, /fmm updatecontent, /fmm downloadpluginupdate, /fmm applypluginupdate y /fmm forcereinstallcontent
  • freeminecraftmodels.admin (predeterminado: OP) - /fmm admin (el explorador de contenido de administrador) y /fmm giveitem
  • freeminecraftmodels.disguise.self (predeterminado: OP) - Permite a un jugador disfrazarse/quitarse el disfraz solo a sí mismo
  • Los comandos disguise y undisguise con un jugador objetivo requieren tanto freeminecraftmodels.disguise.self como freeminecraftmodels.disguise.others. disguiselist solo requiere .others.
  • freeminecraftmodels.deleteall (predeterminado: OP) - Requerido para /fmm deleteall (hijo del comodín)
  • freeminecraftmodels.bypassregionprotection (predeterminado: OP) - Omitir la comprobación de protección de regiones de FMM. No anula todos los eventos de otros plugins ni la comprobación física de espacio libre
  • freeminecraftmodels.menu (predeterminado: true) - Permite a todos los jugadores abrir el explorador de objetos fabricables vía /fmm
  • freeminecraftmodels.shop (predeterminado: true) - Permite a todos los jugadores abrir /fmm shop (aún condicionado a que la tienda esté habilitada)
  • nightbreak.login (predeterminado: OP) - Registrado por MagmaCore, no por plugin.yml. Necesario para /nightbreaklogin y /nightbreaklogout

Los comandos son solo para OP por defecto a menos que se indique lo contrario. Otorga estos permisos a jugadores no-OP si es necesario.

Funciones y Límites de los Modelos

¿Cuáles son los límites de tamaño y rotación de los modelos?​

Información

Límites de Tamaño:

  • El tamaño se comprueba sobre todos los cubos de cada hueso, no sobre el modelo completo
  • El conversor multiplica las coordenadas de cubo por 0.4 y centra cada hueso. El umbral del aviso es 192 en esas coordenadas escaladas; no es un límite de renderizado verificado de 192 píxeles de modelo o 12 bloques
  • El aviso no rechaza ni redimensiona el hueso. Si falla la geometría, reduce o acerca los cubos, o divídelos entre huesos, y revisa el modelo generado en el cliente de destino
  • Un modelo puede abarcar varios huesos; la ausencia de un aviso de tamaño no demuestra que la geometría del pack sea válida

Límites de Rotación de Cubos:

  • Minecraft 1.21.6 y posteriores: el conversor acepta restos arbitrarios dentro de ±45° después de descomponer el ángulo en una transformación base (0°, ±90°, ±180°, incorporada a la geometría). Mantén los ángulos entre −180° y 180° y revisa el resultado; aceptar la descomposición no verifica el renderizado
  • Minecraft 1.21.4 / 1.21.5: el resto debe coincidir con un valor que Minecraft acepte de forma nativa (−45°, −22.5°, 0°, 22.5°, 45°), por lo que se admiten 0°, ±22.5°, ±45°, ±67.5°, ±90°, ±112.5°, ±135°, ±157.5°, ±180°: todos los múltiplos de 22.5°
  • Solo se admite un eje de rotación de cubo en todas las versiones. El bucle recorre de Z a X y sobrescribe la elección, por lo que gana el primer eje no nulo en orden X/Y/Z
  • Ejemplo: [22.5, 0, 45] conserva la rotación X y pierde la Z
  • Un ángulo que FMM no pueda descomponer se registra como Could not decompose rotation angle ... for model name <model> y se aplica sin convertir, lo que suele producir un resultado visual incorrecto

Rotación de Huesos:

  • Los huesos soportan cualquier ángulo de rotación
  • Rotación multieje soportada
  • Los huesos visibles añaden trabajo de renderizado y paquetes por espectador; no todos los huesos estructurales o de metadatos se muestran

Nota de Rendimiento:

Reduce los huesos visibles y los espectadores cuando sea posible. Java representa los huesos visibles mediante entidades de paquetes, mientras que Bedrock usa otra representación. El número de huesos no equivale al número de entidades Bukkit normales.

¿Qué animaciones se admiten?​

Información

FreeMinecraftModels vincula cinco nombres de animación a estados automáticos durante la ejecución:

Animaciones de estado:

  • spawn — se reproduce una vez al crear el modelo y después pasa a idle
  • idle — se repite hasta que la entidad subyacente tiene velocidad distinta de cero en X o Z
  • walk — se repite durante el movimiento horizontal; vuelve a reposo cuando la entidad está en el suelo con velocidades X y Z iguales a cero
  • attack — se reproduce una vez y vuelve a idle
  • death — se reproduce una vez al eliminar mediante removeWithDeathAnimation()

Cualquier otro nombre de animación del modelo corresponde a una animación personalizada: nunca se activa por sí sola, pero se puede reproducir por nombre desde la API o desde Lua.

Acerca de jump

JUMP existe en el enum AnimationStateType y el estado de caminar lo solicita cuando la entidad deja el suelo, pero el gestor de animaciones no registra ningún estado de salto, así que esa transición automática actualmente no hace nada. Una animación llamada literalmente jump sigue funcionando si la activas tú; utiliza la misma vía de animaciones personalizadas que cualquier otro nombre.

Cómo Funciona:

  • Crea animaciones en BlockBench usando los nombres en minúscula de arriba para que FMM las vincule automáticamente al estado correspondiente
  • El plugin lee los fotogramas clave de animación de los archivos .bbmodel durante la importación y precalcula los fotogramas de cada tick
  • Las animaciones de estado se activan automáticamente según el estado de la entidad
  • Los desarrolladores pueden activar animaciones programáticamente usando playAnimation(animationName, blend, loop) en un ModeledEntity, o context.prop:play_animation(name, blend, loop) desde Lua

Los disfraces de jugador son diferentes:

Un modelo usado con /fmm disguise selecciona cinco nombres — attack, jump, sneak, walk, idle — en ese orden antes de pasar al motor compartido. sneak y jump tienen activación automática en disfraces; los modelos normales pueden reproducirlos explícitamente como animaciones personalizadas. Las animaciones de una sola ejecución detienen nuevas selecciones durante 20 ticks. Sin idle, se registra un aviso y el modelo puede quedarse en el último fotograma cuando no hay otra acción. Consulta Disfraces de jugador.

Consulta Animaciones para conocer los modos de bucle, los tipos de interpolación, los tiempos de los fotogramas clave y la IK.

Caso Especial:

Las entidades Evoker detectan Evoker Fangs cercanos para activar las animaciones de ataque automáticamente.

¿Qué son los huesos virtuales y cómo funcionan?​

Información

Los huesos virtuales son huesos especiales con nombres reservados que añaden funcionalidad a tus modelos:

Huesos de Hitbox:

  • Nombre: hitbox (nombre exacto, sin distinguir mayúsculas de minúsculas)
  • Crea zonas de interacción y cajas de colisión
  • Su cubo define anchura, profundidad y altura; X y Z no tienen que coincidir. No cambia la hitbox del jugador disfrazado
  • Debe ser un hueso de nivel superior en la jerarquía; un hueso hitbox dentro de otro grupo se trata como un hueso normal
  • Debe contener exactamente un cubo. Los adicionales registran has more than one value defining a hitbox! Only the first cube will be used; un grupo vacío registra has a hitbox bone but no hitbox cube! y deja dimensiones cero. La posición y rotación del cubo no desplazan la hitbox
  • Nunca se anima ni se renderiza y se excluye de la exportación de geometría de Bedrock

Huesos de Etiqueta de Nombre:

  • Prefijo: tag_
  • Muestra texto sobre los modelos
  • Usado para nombrar entidades
  • Anclaje opcional definido en el modelo. Sin él, la etiqueta de nombre usa una posición alternativa sobre la caja de colisión. Consulta ¿Por qué mi modelo no tiene nombre?
  • El hueso no necesita cubos; es solo un anclaje posicional para el text display, normalmente colocado encima de la cabeza

Huesos de Rotación de Cabeza:

  • Prefijo: h_
  • Rota según la posición de la cabeza del jugador/entidad
  • Rastrea automáticamente el movimiento de la cabeza

Huesos ocultos / estructurales:

  • Prefijo: b_
  • El renderizador de huesos de Java los oculta; el exportador de geometría Bedrock no filtra los huesos b_
  • Úsalos para huesos estructurales, organizativos o que solo contengan metadatos y deban participar en la jerarquía del esqueleto sin producir geometría

Huesos de punto de montaje:

  • Prefijo: m_
  • Cada hueso m_ se convierte en un asiento montable en el modelo, gestionado por MountPointManager
  • El asiento sigue al hueso durante las animaciones
  • Varios huesos m_ crean varios asientos
  • Se excluyen de la exportación de geometría de Bedrock
  • Consulta ¿Qué son los huesos de punto de montaje? más abajo

Uso:

Crea un hueso en BlockBench con uno de estos nombres especiales, y el plugin aplica automáticamente la funcionalidad correspondiente.

FAQ de Solución de Problemas

En lugar de modelos personalizados, solo veo armadura de caballo.​

Información

Ver armadura de caballo significa que no se está aplicando la apariencia personalizada esperada. Comprueba que FMM generó el modelo, que el pack actual lo incluye y que el cliente descargó y aceptó ese pack. Un conflicto de fusión es solo una posible causa.

MagmaGuy ha desarrollado un plugin llamado Resource Pack Manager (RSPM) que puede fusionar automáticamente resource packs por ti. Puedes descargarlo desde Spigot aquí.

RSPM puede fusionar, alojar y distribuir el pack generado. Sigue su guía de instalación, verifica las fuentes habilitadas y la dirección de alojamiento accesible, y después reconecta un cliente para confirmar que aparece el modelo.

¿Por qué no puedo ver mi modelo después de añadir el archivo .bbmodel?​

Información

Si tu modelo no aparece, comprueba estos problemas comunes:

1. Olvidaste recargar

Ejecuta /fmm reload después de colocar los .bbmodel en imports. Revisa la consola: si se rechaza la validación del contenido candidato se conserva el sistema actual, por lo que ejecutar el comando no demuestra que se aplicara el contenido nuevo.

2. Resource pack no aplicado

Los jugadores deben tener el resource pack de FMM activo para ver los modelos.

  • Comprueba ~/plugins/FreeMinecraftModels/output/FreeMinecraftModels.zip para el pack generado
  • Instala Resource Pack Manager para distribución automática
  • O distribuye manualmente vía server.properties o un servicio de hosting

3. Ubicación de archivo incorrecta

Los .bbmodel sueltos van directamente en ~/plugins/FreeMinecraftModels/imports/. Esta vía conserva el archivo fuente y puede convertirlo de nuevo en recargas posteriores. No importa YAML asociados sueltos ni recorre carpetas arbitrarias. Los modelos con archivos asociados pueden estar en models/ o llegar mediante una importación correctamente empaquetada.

Si usas paquetes de contenido oficiales en su lugar, usa /fmm setup o /fmm downloadall en lugar de colocar archivos manualmente.

4. El modelo tiene errores

Comprueba los logs de consola en busca de mensajes de error durante /fmm reload. Los problemas comunes incluyen rotaciones no soportadas, modelos sobredimensionados o problemas de texturas.

5. Problema de fusión de resource pack

Si el cliente tiene un pack pero muestra el material base, revisa la definición generada, las rutas de texturas, el resultado fusionado y la versión del pack del cliente. Resource Pack Manager puede gestionar fusión y entrega; instalarlo no demuestra que hayan funcionado.

6. Colisión de ID de modelo

Busca [FMM Models] Rejected normalized model ID collision en la consola. Dos o más de tus archivos de modelo se normalizan al mismo ID y tienen contenido distinto, así que se rechazaron todos. Consulta ¿Por qué fue rechazado mi modelo por una colisión de ID? más abajo.

¿Por qué fue rechazado mi modelo por una colisión de ID?​

Info

FreeMinecraftModels normaliza el nombre de todo archivo de modelo antes de usarlo como ID de modelo del runtime y como nombre de archivo del resource pack: pasa el nombre a minúsculas y luego reemplaza cada carácter fuera de a-z, 0-9, ., _ y - por un guion bajo.

Eso significa que todos estos colapsan al mismo ID, my_table:

My Table.bbmodel
my table.bbmodel
my_table.bbmodel
MY_TABLE.bbmodel

Antes de que empiece la conversión, FMM barre el árbol de modelos en busca de estas colisiones. Si todos los archivos en conflicto son idénticos byte a byte, por ejemplo el mismo modelo distribuido por dos paquetes de contenido, FMM carga una copia y omite las demás sin aviso. Si no, se rechazan todos los archivos en conflicto, no solo los sobrantes, así que nunca acabas con un resultado impredecible del tipo "gana el que se cargó el último". La consola imprime:

[FMM Models] Rejected normalized model ID collision '<id>'. These files normalize to the same ID: <paths>. Rename the files so every normalized model ID is unique; no colliding model was loaded.

La solución: renombra los archivos para que sus IDs normalizados difieran, y luego ejecuta /fmm reload. La advertencia lista las rutas absolutas exactas implicadas.

Cómo evitarlo: usa nombres únicos en minúsculas y con guiones bajos (stone_table.bbmodel) en todo el árbol de modelos. Estar en carpetas distintas no hace únicos los nombres base repetidos, y otro nombre aún puede normalizarse al mismo ID.

Los modelos rechazados se omiten en todas partes — ni salida en el pack de Java, ni paquete de entidades personalizadas de Bedrock.

¿Por qué mi modelo no tiene nombre?​

El sistema actual ya no requiere un hueso tag_ para mostrar nombres. Usa el primer hueso de etiqueta en orden alfabético si existe; en caso contrario, utiliza una posición sobre la caja de colisión del modelo.

Comprueba que el plugin que controla el modelo establece un nombre visible no vacío y no ha ocultado la etiqueta. Si el nombre está mal colocado, revisa la caja de colisión o añade un anclaje tag_name sin cubos en Blockbench. Varios huesos de etiqueta no crean nombres repetidos. Consulta la creación de etiquetas de nombre.

ViaVersion puede provocar que los paquetes de recursos no se muestren correctamente.​

Información

La versión actual de FreeMinecraftModels requiere un servidor con Minecraft 1.21.4 o posterior. Permitir clientes más recientes mediante un traductor de protocolo no convierte un servidor antiguo en una instalación compatible con FMM.

Al diagnosticar un problema de paquetes, reprodúcelo primero con un cliente de la misma versión que el servidor compatible. Confirma que el cliente descargó el paquete actual y puede renderizar su formato de modelos de objetos; después compáralo con la conexión del cliente mediante traducción de protocolo. Anota las versiones del servidor, del cliente y del plugin de protocolo en lugar de atribuir todos los modelos ausentes a ViaVersion.

¿Por qué mis modelos causan lag o problemas de rendimiento?​

Información

Los modelos con muchos huesos visibles añaden trabajo de transformaciones, paquetes y renderizado en el cliente. El número de espectadores también influye.

Consejos de Optimización:

  • Minimiza el número de huesos en tus modelos
  • Limita el número de modelos generados
  • Usa modelos estáticos si no necesitas una entidad viva subyacente; los modelos estáticos también pueden animarse
  • Evita generar muchos modelos con muchos huesos cerca unos de otros

Explicación Técnica:

Java usa entidades de paquetes por hueso, excluyendo las vías ocultas o de metadatos. Bedrock puede representar todo el modelo como una entidad personalizada. Un modelo de 50 huesos no crea necesariamente 50 entidades normales del servidor ni envía 50 entidades visibles a cada cliente.

Mejores Prácticas:

  • Diseña modelos con menos huesos
  • Prueba el rendimiento con conteos de generación realistas
  • Monitoriza el TPS del servidor al añadir nuevos modelos

Cómo medirlo:

Ejecuta /fmm packetdebug 20 en la zona afectada. Informa de paquetes y difusión por espectador durante los siguientes 20 ticks del reloj de modelos, incluidos los espectadores con mayor carga y los tipos de paquetes. Ayuda a investigar el tráfico; no es un perfil de CPU ni demuestra que el cliente haya renderizado los paquetes.

Optimizaciones de paquetes integradas:

Tres claves de config.yml controlan las optimizaciones del lado de los paquetes. Todas tienen por defecto el comportamiento optimizado — los ajustes alternativos existen para depuración, no como consejo de tuning:

  • skipUnchangedBoneUpdates (por defecto true) — omite transformaciones sin cambios salvo que el hueso se haya marcado explícitamente para actualizar, por ejemplo por un cambio de tinte. No elimina todo el procesamiento del modelo ni el tráfico de seguimiento
  • useDeltaMetadataPackets (por defecto true) — el paquete de metadatos por tick lleva solo la transformación cambiada en lugar de reserializar todo el blob de item-display
  • maxModelsForProximityOverride (por defecto 25) — los modelos a menos de 10 bloques se muestran normalmente siempre, omitiendo el raytrace de línea de visión para evitar apariciones bruscas. Una vez que un mundo contiene esta cantidad de modelos cargados, esa sobrescritura se desactiva en ese mundo para que el descarte por oclusión se ejecute incluso de cerca. Esta es la clave a mirar en hubs de NPC de varias plantas donde los jugadores se convertían en espectadores de modelos de otras plantas

Consulta Configuración para las descripciones completas.

Funciones Avanzadas

¿Necesito Resource Pack Manager (RSPM)?​

Información

Resource Pack Manager (RSPM) es opcional pero muy recomendado.

Lo Que Hace RSPM:

  • Fusiona automáticamente los resource packs de múltiples plugins
  • Aloja los resource packs (no se necesita hosting externo)
  • Distribuye los packs a los jugadores automáticamente al iniciar sesión
  • Reduce la gestión manual; aún debes verificar la selección de fuentes, el alojamiento y la aceptación del cliente

Sin RSPM:

Debes manualmente:

  • Fusionar el resource pack de FMM con cualquier resource pack existente del servidor
  • Alojar el pack fusionado en una URL de descarga accesible
  • Configurar server.properties u otro sistema para enviar esa URL a los jugadores; server.properties no aloja archivos
  • Actualizar el pack cada vez que añadas nuevos modelos

Por Qué Usar RSPM:

RSPM ofrece un flujo para fusionar, alojar y enviar packs. Comprueba su salida y un cliente real al investigar modelos ausentes.

Descarga RSPM: https://www.spigotmc.org/resources/resource-pack-manager.118574/

Desarrollado por MagmaGuy, el mismo autor de FreeMinecraftModels.

¿Puedo usar FreeMinecraftModels en mi propio plugin?​

Información

Sí, FreeMinecraftModels proporciona una API para desarrolladores.

Integración Maven/Gradle:

Repositorio: https://repo.magmaguy.com/releases

Artefacto:

  • GroupId: com.magmaguy
  • ArtifactId: FreeMinecraftModels
  • Scope: provided (debe estar instalado en el servidor, no usar shade)

Clases Principales de la API:

  • ModeledEntity (clase base)
  • StaticEntity
  • DynamicEntity
  • PropEntity

Ejemplo de Uso:

StaticEntity staticEntity = StaticEntity.create(id, location);
if (staticEntity == null) {
Bukkit.getLogger().warning("Failed to create model");
return;
}
staticEntity.setRightClickCallback(...);
staticEntity.remove();

Importante:

No incluyas FreeMinecraftModels con shade en tu plugin. Debe estar instalado por separado en el servidor.

Para documentación detallada de la API, consulta el README oficial.

¿Cómo disfrazo a un jugador como un modelo personalizado?​

Información

El comando /fmm disguise transforma la apariencia de un jugador en cualquier modelo personalizado.

Comandos:

/fmm disguise <modelID> [player]
/fmm undisguise [player]
/fmm disguiselist

Cómo funciona:

  • Hace al jugador invisible para otros jugadores
  • Superpone el modelo personalizado en la posición del jugador
  • El modelo sigue los movimientos del jugador
  • Perfecto para servidores de rol o eventos especiales

Ejemplos:

/fmm disguise dragon              # Disguise yourself
/fmm disguise dragon Steve # Disguise another player
/fmm undisguise Steve # Undisguise Steve
/fmm disguiselist # List everyone currently disguised

Requisitos:

  • Apuntarse a uno mismo: freeminecraftmodels.disguise.self (predeterminado: OP)
  • Los comandos disguise y undisguise con un jugador objetivo requieren tanto freeminecraftmodels.disguise.self como freeminecraftmodels.disguise.others. disguiselist solo requiere .others.
  • La consola puede ejecutar la forma con objetivo siempre que se proporcione un nombre de jugador
  • modelID debe coincidir exactamente con un modelo cargado
  • Los plugins de terceros pueden controlar los disfraces a través de la DisguiseAPI pública

Notas:

  • La hitbox del jugador permanece sin cambios (misma caja de colisión)
  • Otros jugadores ven el modelo personalizado en lugar de la skin del jugador
  • Disfrazarse de nuevo mientras ya está disfrazado reemplaza limpiamente el disfraz previo
  • FMM restaura la invisibilidad tras cambios relevantes de efectos solo si este disfraz la añadió originalmente. No restaura un efecto preexistente. Consulta Disfraces de jugador

¿Cómo creo objetos de modelo colocables?​

Información

El comando /fmm itemify crea objetos especiales que los jugadores pueden usar para colocar modelos en el mundo.

Comando:

/fmm itemify <model> <material>

Parámetros:

  • model - Cualquier ID de modelo válido de tu carpeta de modelos
  • material - Cualquier material de Minecraft (STICK, PAPER, DIAMOND, etc.)

Ejemplo:

/fmm itemify lamp_post STICK

Lo que crea:

  • Un objeto personalizado con un nombre de visualización formateado con decoración dorada (p. ej. "✦ Wolf ✦")
  • Lore descriptivo explicando el objeto
  • El objeto se añade al inventario; deja espacio porque no se suelta el exceso
  • Haz clic derecho desde la mano principal para colocar el prop, sujeto a las comprobaciones de FMM. Fuera del modo creativo, el objeto se consume después de generar el prop correctamente

Casos de uso:

  • Dar a los jugadores objetos para decorar sus construcciones
  • Crear "huevos de generación" personalizados para muebles
  • Distribuir objetos de colocación conservando las comprobaciones de protección configuradas
  • Configurar kits para construcción creativa

Requisitos:

  • Permiso: freeminecraftmodels.*
  • El jugador debe estar en el juego (no consola)

¿Cómo depuro las hitboxes del modelo?​

Información

El comando /fmm hitbox visualize visualiza las hitboxes del modelo usando partículas.

Comando:

/fmm hitbox visualize [duration]

Parámetros:

  • duration es opcional y vale 100 ticks por defecto. Los valores no positivos usan 100 ticks; el máximo es 1200
  • 20 ticks = 1 segundo

Ejemplos:

/fmm hitbox visualize 100      # Show for 5 seconds
/fmm hitbox visualize 200 # Show for 10 seconds

Cómo funciona:

  • Busca modelos dentro de 10 bloques de ti
  • Muestra los límites de la oriented bounding box (OBB) con partículas
  • Muestra tanto el modelo como sus límites de colisión
  • Útil para verificar el tamaño y rotación de la hitbox

La detección comprueba el segmento entre posiciones registradas para detectar cruces de OBB finas; sin posición anterior usa una comprobación de solapamiento. Procesa los impactos del más cercano al más lejano. Un proyectil normal tiene un impacto en objetivo modelado; una flecha con Perforación tiene pierce level + 1 objetivos distintos. Cancelar un impacto impide su función y daño predeterminados, pero gasta igualmente el límite de objetivos. Consulta la API de proyectiles.

Cuándo usar:

  • Probar si las hitboxes coinciden con los modelos visuales
  • Depurar problemas de interacción
  • Verificar rotaciones de hitbox
  • Solucionar problemas de detección de clic

Requisitos:

  • Permiso: freeminecraftmodels.*

Nota: Las hitboxes en FMM rotan con el modelo, a diferencia de las AABBs estándar de Minecraft.

¿Puedo crear modelos personalizados montables?​

Información

Sí, usa el comando /fmm mount para crear modelos personalizados montables (función experimental).

Comando:

/fmm mount <modelID>

Lo que hace:

  • Genera un caballo en tu ubicación
  • Disfraza el caballo como tu modelo personalizado
  • Doma automáticamente el caballo y añade una silla
  • Intenta montarte un tick después: directamente en el caballo si no hay puntos de montaje, o mediante un soporte para armaduras marcador si el modelo tiene uno

Ejemplo:

/fmm mount dragon

Requisitos:

  • Permiso: freeminecraftmodels.*
  • ID de modelo válido

Notas importantes:

  • Esta función está marcada como experimental
  • Usa un caballo adulto domesticado con velocidad base 0.3 y fuerza de salto base 0.7
  • La hitbox del caballo permanece sin cambios
  • Funciona mejor con modelos diseñados para monturas

Casos de uso:

  • Monturas personalizadas para servidores de rol
  • Transporte especial para jugadores VIP
  • Criaturas montables únicas para mapas de aventura

¿Qué son los huesos de punto de montaje?​

Información

Los puntos de montaje te permiten definir posiciones montables directamente en tu modelo usando huesos con nombres especiales.

Cómo crear puntos de montaje:

En Blockbench, usa el prefijo m_ respetando las minúsculas (por ejemplo m_seat, m_back). Cada hueso crea un asiento gestionado para un jugador.

Cómo funciona:

  • La posición de montaje sigue la ubicación del hueso, incluyendo animaciones
  • Múltiples huesos m_ crean múltiples asientos
  • El gestor acepta jugadores mediante la API o Lua y elige el primer asiento libre. Usa entidades Interaction temporales de tamaño cero y actualiza los asientos mientras están ocupados

Pruebas:

Para probar un asiento de un elemento decorativo, genera o coloca el elemento y haz clic derecho en él, o llama al método Lua context.prop:mount(player). /fmm mount <modelID> crea una montura experimental basada en un caballo y utiliza una vía de montaje distinta.

Casos de uso:

  • Vehículos multi-asiento (barcos, carruajes)
  • Criaturas montables con posiciones de asiento específicas
  • Mascotas o compañeros montados en el hombro

Objetos Personalizados

¿Qué son los objetos personalizados?​

Los objetos personalizados son objetos que se pueden sostener definidos mediante un campo material: en el YAML situado junto al modelo. Llevan la identidad fmm_item_id; los objetos para colocar elementos decorativos creados mediante /fmm itemify llevan model_id.

Crea un modelo y un YAML con el mismo nombre, establece material y añade opcionalmente name, lore y enchantments con espacio de nombres:

isEnabled: true
material: DIAMOND_SWORD
name: "&6Flame Blade"
enchantments:
- "minecraft:fire_aspect,2"

Usa /fmm giveitem <id> o /fmm admin con freeminecraftmodels.admin.

¿Los objetos personalizados siguen ejecutando scripts Lua?​

No. El antiguo sistema de objetos equipados y sus 22 eventos de script se han retirado. Se omiten las definiciones de objetos que contengan una lista scripts: no vacía, así como las entradas antiguas de encantamientos sin espacio de nombres, como FIRE_ASPECT,2. El archivo no se convierte ni se reescribe. Los scripts Lua de elementos decorativos siguen funcionando como antes.

Usa encantamientos gestionados por su proveedor para los efectos de objetos y definiciones de armas mágicas para varitas y bastones.

Menús

¿Qué menús proporciona FMM?​

Información

FreeMinecraftModels proporciona estos dos menús de exploración, además de los menús separados de configuración, creación de recetas y tienda opcional.

Menú de Jugador — /fmm

  • Permiso: freeminecraftmodels.menu (predeterminado: true, todos los jugadores pueden usarlo)
  • Muestra solo entradas con recetas registradas correctamente; registerCraftingRecipes: false las elimina de este explorador
  • Hacer clic en un objeto muestra una vista de detalle con una previsualización espacial de cuadrícula de fabricación 3x3
  • Permite consultar recetas de objetos de papel para colocar props; son distintos de los objetos personalizados que se sostienen

Menú de Administrador — /fmm admin

  • Permiso: freeminecraftmodels.admin (predeterminado: OP)
  • Explorador de contenido completo que muestra:
    • Paquetes habilitados con contenido cargado
    • Carpetas de modelos sin empaquetar
    • Modelos a nivel raíz
    • Objetos personalizados registrados correctamente
  • Las entradas de paquete y carpeta abren listas; las individuales entregan objetos. Usa /fmm setup para activar y descargar paquetes

Modelos de Visualización

¿Qué son los modelos de visualización?​

Información

Los modelos de visualización permiten a los objetos personalizados mostrar un modelo 3D en el inventario del jugador y en la mano, en lugar de la apariencia predeterminada del material.

Cómo configurar un modelo de visualización:

  1. En Blockbench, usa File > Export > Java Block/Item para exportar un archivo de modelo .json
  2. Coloca el archivo .json junto al archivo .bbmodel con el mismo nombre base (p. ej. magic_sword.json junto a magic_sword.bbmodel)
  3. Ejecuta /fmm reload

Cómo funciona:

  • Un modelo de visualización registrado puede sustituir la apariencia en mano e inventario cuando el cliente acepta el pack generado
  • Las referencias de textura sin espacio de nombres usan la clave numérica correspondiente del mapa. Si falta, se usa una textura extraída disponible, sin garantizar que sea el índice cero. Las referencias con espacio de nombres se conservan
  • Si no existe un archivo .json, el objeto vuelve a la apariencia simple del material
  • El plugin actual requiere Minecraft 1.21.4 o posterior; la presencia de código de renderizado antiguo no implica compatibilidad con servidores anteriores

Requisitos:

  • Servidor ejecutando Minecraft 1.21.4 o más reciente
  • Una exportación válida de "Java Block/Item" de Blockbench (.json) junto al modelo; los JSON inválidos no se registran. Los grupos de estados de arco y ballesta requieren todos los modelos de estado y sus JSON de visualización