Partículas de FreeMinecraftModels
FreeMinecraftModels reproduce los fotogramas clave de partículas de las animaciones de Blockbench de un modelo. Eso incluye entidades personalizadas, props y objetos sostenidos. Los jugadores Java ven las partículas como sprites enviados solo mediante paquetes que FMM simula en el servidor. Los jugadores Bedrock reciben el efecto de Snowstorm original, dibujado por su propio cliente.
Para los nombres de animación y las reglas de reproducción, consulta Animaciones. Para los locators y el resto del contrato de importación, consulta Notas de creación de modelos.
Creación en Blockbench
- Crea el efecto en el editor de partículas de Blockbench (Snowstorm) y guárdalo como archivo de partículas
.json. - Añade un locator al modelo en el punto del que debe salir el efecto. Un locator dentro de un hueso se mueve con la animación de ese hueso, así que un locator en un brazo que gira deja una estela a lo largo de la trayectoria del brazo.
- En una animación, abre el animador Effects y añade un fotograma clave de partículas. Indica el nombre del efecto, el locator y el archivo de partículas. El campo opcional de script se ejecuta como Molang antes de que empiece el efecto, por ejemplo
v.size = 2;. - Coloca el archivo de partículas y su textura PNG junto al
.bbmodel(o en una carpetaparticles/a su lado) y distribúyelos con el modelo.
Un fotograma clave sin locator se reproduce en el origen del modelo. Un fotograma clave que nombra un locator que el modelo no tiene también se reproduce en el origen y registra un aviso.
Dónde busca FMM los archivos de partículas
Blockbench solo guarda la ruta local del autor al archivo de partículas, así que FMM busca por nombre de archivo. Para cada efecto prueba, en este orden, primero en la carpeta del modelo y después en una carpeta particles/ a su lado:
- El nombre de archivo guardado en el fotograma clave
<effect>.particle.json<effect>.json
Un .json que no sea un archivo de partículas (por ejemplo, un modelo de visualización con el mismo nombre que el efecto) se omite. Cuando no encuentra nada, la consola muestra Particle effect '<effect>' used by animation '<animation>' in <model> was not found, esos fotogramas clave se descartan y el resto del modelo se carga con normalidad.
Texturas
El basic_render_parameters.texture del archivo de partículas se busca por el último segmento de su ruta: textures/particle/spark significa que FMM busca spark.png, primero junto al archivo de partículas, después junto al modelo y por último en la carpeta particles/ del modelo.
Si falta el PNG, los jugadores Java ven sprites blancos lisos teñidos con el color del efecto, y la consola muestra un aviso. Bedrock conserva la ruta de textura original, así que allí sigue funcionando una textura vanilla de Bedrock como textures/blocks/wool_colored_white. Distribuye un PNG con el nombre correspondiente para conseguir el mismo aspecto en Java.
Cuándo se reproducen los efectos
- Un efecto empieza cuando su animación llega al fotograma clave. En una animación en bucle, el fotograma clave se vuelve a activar en cada vuelta y su emisor se reinicia.
- Cuando la animación se detiene o cambia, los emisores en bucle dejan de generar partículas. Las partículas que ya están en el aire terminan su vida.
- Los emisores se pausan mientras ningún jugador Java puede ver el modelo.
filmicModemantiene visibles todos los modelos cargados, así que también mantiene en marcha sus partículas. - Eliminar un modelo elimina al instante sus emisores y todos sus sprites de partículas. Eso incluye la muerte, la desaparición, la descarga del chunk y
/fmm deleteall.
Props
Un prop solo reproduce idle por sí mismo. Coloca los fotogramas clave de partículas en idle, o reproduce la animación que los contiene desde un script Lua de prop:
context.prop:play_animation("sparkle", true, true)
Objetos sostenidos
Las partículas también se reproducen en los objetos personalizados de FMM, es decir, los objetos entregados con /fmm giveitem o desde el menú de administrador. El modelo del objeto debe tener fotogramas clave de partículas. FMM lee las transformaciones thirdperson_righthand y thirdperson_lefthand de su modelo de visualización (el .json hermano) para saber dónde queda el objeto en la mano. Sin modelo de visualización, Java coloca las partículas como si el objeto no tuviera transformación de visualización, y Bedrock no recibe partículas de objeto sostenido.
- FMM repite en bucle la animación
helddel modelo mientras el objeto está en cualquiera de las dos manos. Si no hay una animaciónheldcon fotogramas clave de partículas, usa la primera animación, por nombre, que tenga alguno. - Los huesos no se animan en un objeto sostenido. Los locators se quedan en su posición de reposo sobre el objeto.
- Java: el servidor no puede saber si un jugador está en primera persona, tercera persona o con la cámara frontal. FMM coloca las partículas en la punta del objeto en la pose de tercera persona, a partir de la rotación del cuerpo del portador, si está agachado, la mano que sostiene el objeto, su atributo
scaley las transformaciones del modelo de visualización. Todos los jugadores Java, incluido el portador, las ven en esa única posición. En primera persona, el portador las ve donde está su mano en tercera persona, no sobre el objeto en primera persona. Los balanceos del brazo y las poses de uso del objeto no se siguen, así que las partículas pueden quedarse un poco por detrás del objeto mientras el brazo se mueve. Los jugadores Java a menos de 48 bloques del portador ven las partículas. - Bedrock: las partículas se añaden al attachable de Bedrock del objeto, y el cliente de Bedrock las dibuja en la mano real en todas las vistas de cámara. Esto requiere la conversión a Bedrock de ResourcePackManager.
Renderizado en Java
- Cada partícula es una entidad de paquetes
item_display. Nunca existe en el mundo, así que otros plugins no pueden golpearla, guardarla ni eliminarla. - FMM mueve las partículas cada 2 ticks, y el cliente suaviza el movimiento entre medias.
- Las expresiones de UV se muestrean al cargar en un máximo de 16 variantes de textura por efecto, y cada fotograma de flipbook de cada variante se convierte en su propio sprite. Esos sprites van al resource pack en
assets/freeminecraftmodels/items/particle/<model>/<effect>/, con su textura entextures/entity/fmm_particles/<model>/<effect>.png. FMM también escribeassets/freeminecraftmodels/rspm_item_java_only/particle/<model>/<effect>.json, que indica a ResourcePackManager que no convierta los objetos de sprite en objetos personalizados de Bedrock. - Las partículas se renderizan con brillo máximo salvo que el efecto tenga
minecraft:particle_appearance_lighting. - Un efecto en un modelo muestra como máximo
maxParticlesPerEmitterpartículas, o elmax_particlesdel propio archivo cuando es menor. A un jugador Java se le muestran como máximomaxParticlesPerViewerpartículas sumando todos los modelos. Por encima de ese límite, se omiten las partículas nuevas para ese jugador hasta que caduquen las más antiguas. particleEffectsEnabled: falsedesactiva todos los efectos sin editar los modelos.
Componentes que admite Java
| Componente | Compatibilidad en Java |
|---|---|
emitter_rate_instant, emitter_rate_steady | Completa |
emitter_lifetime_once, emitter_lifetime_looping, emitter_lifetime_expression | Completa |
emitter_initialization | Expresiones de creación y por actualización |
emitter_local_space | Posición y rotación |
emitter_shape_point, _sphere, _box, _disc, _custom | Desplazamiento, radio, semidimensiones, normal del plano, surface_only y dirección outwards, inwards o personalizada |
particle_initialization | Expresiones por actualización y por renderizado |
particle_initial_speed, particle_initial_spin | Completa |
particle_motion_dynamic | Aceleración lineal y resistencia, aceleración de rotación y resistencia |
particle_lifetime_expression | max_lifetime y expiration_expression |
particle_appearance_billboard | Tamaño, modo de orientación, dirección y UV, flipbooks incluidos |
particle_appearance_tinting | Colores fijos, expresiones por canal y degradados |
particle_appearance_lighting | Desactiva el brillo máximo predeterminado |
Los demás componentes se ignoran en Java, por ejemplo particle_motion_parametric, particle_motion_collision, emitter_rate_manual y emitter_shape_entity_aabb. La consola los enumera por nombre cuando se carga el modelo. Los jugadores Bedrock siguen viendo el efecto completo.
Los modos de orientación se corresponden con los billboards de las entidades de visualización. rotate_xyz, lookat_xyz y lookat_direction miran a la cámara. rotate_y y lookat_y solo giran alrededor del eje vertical. direction_x, direction_y, direction_z y los modos emitter_transform_* mantienen una orientación fija a partir de la dirección de la partícula o de la rotación del emisor.
Molang
Las expresiones admiten aritmética, comparaciones, ?:, ??, asignaciones y return. Funciones matemáticas:
abs, acos, asin, atan, atan2, ceil, clamp, cos, die_roll, die_roll_integer, exp, floor, hermite_blend, lerp, lerprotate, ln, max, min, mod, pow, random, random_integer, round, sin, sqrt, trunc y la constante math.pi.
La trigonometría trabaja en grados, como en Bedrock. Variables integradas:
variable.particle_age,variable.particle_lifetime,variable.particle_random_1a_4variable.emitter_age,variable.emitter_lifetime,variable.emitter_random_1a_4
Tus propias variables v. de las expresiones de inicialización y de los scripts de fotogramas clave funcionan, igual que las curvas (linear, catmull_rom, bezier, bezier_chain). Las variables y consultas desconocidas se leen como 0.
Bedrock
Con sendCustomModelsToBedrockClientsV2 activado, el paquete de Bedrock incluye cada efecto como particles/<model>_<effect>.json con el identificador fmm:<model>_<effect>. También incluye la textura de las partículas, los locators en los huesos de la geometría y los fotogramas clave de partículas en las animaciones de Bedrock. Así, los clientes de Bedrock reproducen el efecto de forma nativa, incluidos los componentes que Java omite.
Para los objetos sostenidos, FMM escribe assets/freeminecraftmodels/rspm_item_particles/display/<item>.json en su salida de Java. ResourcePackManager lo lee mientras convierte el objeto y añade los locators y una animación de partículas en bucle al attachable del objeto.
Solución de problemas
Particle effect '<effect>' ... was not found.
FMM no encontró el archivo de partículas. Colócalo junto al modelo como <effect>.json o <effect>.particle.json, o con el nombre de archivo guardado en el fotograma clave. Consulta Dónde busca FMM los archivos de partículas.
... uses <components>, which Java players do not see yet.
Es solo informativo. Java reproduce todo lo demás del efecto, y Bedrock lo reproduce entero.
... uses texture '<path>', which is not next to <file>.
Coloca la textura PNG junto al archivo de partículas, con el nombre del último segmento de esa ruta.
... follows locator '<name>', which the model does not have.
El locator se renombró o se eliminó. El efecto se reproduce en el origen del modelo hasta que el fotograma clave nombre un locator existente.
Las partículas de mi prop nunca aparecen.
Los props solo reproducen idle por sí mismos. Mueve los fotogramas clave a idle o reproduce la animación desde un script.
Las partículas de mi objeto sostenido se alejan del objeto en primera persona. Es lo esperado en Java. El servidor las coloca en la mano de tercera persona. Los demás jugadores y las vistas en tercera persona las ven sobre el objeto.
Mi objeto sostenido no muestra partículas.
El objeto debe ser un objeto personalizado de FMM (lleva fmm_item_id), y una de las animaciones de su modelo debe tener fotogramas clave de partículas cuyos archivos FMM haya encontrado.