Partículas do FreeMinecraftModels
O FreeMinecraftModels reproduz os fotogramas-chave de partículas das animações do Blockbench de um modelo. Isto abrange entidades personalizadas, elementos decorativos e itens de mão. Os jogadores Java veem as partículas como sprites enviados apenas por pacotes, que o FMM simula no servidor. Os jogadores Bedrock recebem o efeito Snowstorm original, desenhado pelo seu próprio cliente.
Para os nomes das animações e as regras de reprodução, consulte Animações. Para os localizadores e o resto das regras de importação, consulte Notas sobre criação de modelos.
Criação no Blockbench
- Crie o efeito no editor de partículas do Blockbench (Snowstorm) e guarde-o como ficheiro de partículas
.json. - Acrescente ao modelo um localizador no ponto de onde o efeito deve sair. Um localizador dentro de um osso acompanha a animação desse osso, pelo que um localizador num braço que gira deixa um rasto ao longo do percurso do braço.
- Numa animação, abra o animador Effects e acrescente um fotograma-chave de partículas. Defina o nome do efeito, o localizador e o ficheiro de partículas. O campo opcional de script é executado como Molang antes de o efeito começar, por exemplo
v.size = 2;. - Coloque o ficheiro de partículas e o PNG da sua textura junto do
.bbmodel(ou numa pastaparticles/ao lado dele) e distribua-os com o modelo.
Um fotograma-chave sem localizador é reproduzido na origem do modelo. Um fotograma-chave que indique um localizador que o modelo não tem também é reproduzido na origem e regista um aviso.
Onde o FMM procura os ficheiros de partículas
O Blockbench só guarda o caminho local do autor para o ficheiro de partículas, pelo que o FMM procura pelo nome do ficheiro. Para cada efeito, tenta por esta ordem, primeiro na pasta do modelo e depois numa pasta particles/ ao lado dela:
- O nome de ficheiro guardado no fotograma-chave
<effect>.particle.json<effect>.json
Um .json que não seja um ficheiro de partículas (por exemplo, um modelo de apresentação com o mesmo nome do efeito) é ignorado. Quando nada é encontrado, a consola indica Particle effect '<effect>' used by animation '<animation>' in <model> was not found, esses fotogramas-chave são descartados e o resto do modelo carrega normalmente.
Texturas
O basic_render_parameters.texture do ficheiro de partículas é comparado pelo último segmento do caminho: textures/particle/spark significa que o FMM procura spark.png, primeiro junto do ficheiro de partículas, depois junto do modelo e por fim na pasta particles/ do modelo.
Se o PNG estiver em falta, os jogadores Java veem sprites brancos simples tingidos com a cor do efeito, e a consola apresenta um aviso. O Bedrock mantém o caminho original da textura, pelo que uma textura normal do Bedrock, como textures/blocks/wool_colored_white, continua a funcionar aí. Inclua um PNG com o nome correspondente para obter o mesmo aspeto no Java.
Quando os efeitos são reproduzidos
- Um efeito começa quando a sua animação chega ao fotograma-chave. Numa animação em ciclo, o fotograma-chave volta a disparar em cada ciclo e o seu emissor recomeça.
- Quando a animação para ou muda, os emissores em ciclo deixam de gerar partículas. As partículas que já estão no ar completam o seu tempo de vida.
- Os emissores ficam em pausa enquanto nenhum jogador Java consegue ver o modelo. O
filmicModemantém visíveis todos os modelos carregados, pelo que também mantém as suas partículas em funcionamento. - Remover um modelo remove imediatamente os seus emissores e todos os sprites de partículas. Isto inclui a morte, o desaparecimento, o descarregamento do chunk e
/fmm deleteall.
Elementos decorativos
Um elemento decorativo só reproduz idle por si próprio. Coloque os fotogramas-chave de partículas em idle ou reproduza a animação que os contém a partir de um script Lua de elemento decorativo:
context.prop:play_animation("sparkle", true, true)
Itens de mão
As partículas também são reproduzidas em itens personalizados do FMM, ou seja, itens entregues com /fmm giveitem ou pelo menu de administração. O modelo do item tem de ter fotogramas-chave de partículas. O FMM lê as transformações thirdperson_righthand e thirdperson_lefthand do seu modelo de apresentação (o .json complementar) para saber onde o item fica na mão. Sem modelo de apresentação, o Java coloca as partículas como se o item não tivesse transformação de apresentação, e o Bedrock não recebe partículas no item de mão.
- O FMM repete em ciclo a animação
helddo modelo enquanto o item está em qualquer das mãos. Sem uma animaçãoheldcom fotogramas-chave de partículas, usa a primeira animação, por ordem de nome, que os tenha. - Os ossos não são animados num item de mão. Os localizadores ficam na sua posição de repouso no item.
- Java: o servidor não consegue saber se um jogador está na primeira pessoa, na terceira pessoa ou com a câmara frontal. O FMM coloca as partículas na ponta do item na pose de terceira pessoa, com base na rotação do corpo de quem o segura, no agachamento, na mão que segura o item, no seu atributo
scalee nas transformações do modelo de apresentação. Todos os jogadores Java, incluindo quem segura o item, as veem nessa mesma posição. Na primeira pessoa, quem segura o item vê-as onde está a sua mão de terceira pessoa, e não no item de primeira pessoa. Os movimentos do braço e as poses de utilização de itens não são acompanhados, pelo que as partículas podem ficar ligeiramente atrás do item enquanto o braço se move. Os jogadores Java a menos de 48 blocos de quem segura o item veem as partículas. - Bedrock: as partículas são acrescentadas ao attachable Bedrock do item, e o cliente Bedrock desenha-as na mão real em todas as vistas de câmara. Isto requer a conversão Bedrock do ResourcePackManager.
Apresentação no Java
- Cada partícula é uma entidade por pacotes
item_display. Nunca existe no mundo, pelo que outros plugins não a podem atingir, guardar nem remover. - O FMM move as partículas a cada 2 ticks, e o cliente suaviza o movimento entre esses momentos.
- As expressões de UV são amostradas no carregamento em, no máximo, 16 variantes de textura por efeito, e cada fotograma flipbook de cada variante torna-se um sprite próprio. Esses sprites vão para o pacote de recursos em
assets/freeminecraftmodels/items/particle/<model>/<effect>/, com a textura emtextures/entity/fmm_particles/<model>/<effect>.png. O FMM escreve tambémassets/freeminecraftmodels/rspm_item_java_only/particle/<model>/<effect>.json, que indica ao ResourcePackManager que não deve transformar os itens de sprite em itens personalizados Bedrock. - As partículas são apresentadas com brilho máximo, a menos que o efeito tenha
minecraft:particle_appearance_lighting. - Um efeito num modelo mostra, no máximo,
maxParticlesPerEmitterpartículas, ou omax_particlesdo próprio ficheiro quando este for inferior. A um jogador Java são mostradas, no máximo,maxParticlesPerViewerpartículas, somando todos os modelos. Acima desse limite, as novas partículas desse jogador são ignoradas até as mais antigas expirarem. particleEffectsEnabled: falsedesativa todos os efeitos sem editar os modelos.
Componentes suportados no Java
| Componente | Suporte no Java |
|---|---|
emitter_rate_instant, emitter_rate_steady | Completo |
emitter_lifetime_once, emitter_lifetime_looping, emitter_lifetime_expression | Completo |
emitter_initialization | Expressões de criação e por atualização |
emitter_local_space | Posição e rotação |
emitter_shape_point, _sphere, _box, _disc, _custom | Desvio, raio, meias dimensões, normal do plano, surface_only e direção outwards, inwards ou personalizada |
particle_initialization | Expressões por atualização e por renderização |
particle_initial_speed, particle_initial_spin | Completo |
particle_motion_dynamic | Aceleração e arrasto lineares, aceleração e arrasto de rotação |
particle_lifetime_expression | max_lifetime e expiration_expression |
particle_appearance_billboard | Tamanho, modo de orientação, direção e UV, incluindo flipbooks |
particle_appearance_tinting | Cores fixas, expressões por canal e gradientes |
particle_appearance_lighting | Desativa a predefinição de brilho máximo |
Os outros componentes são ignorados no Java, por exemplo particle_motion_parametric, particle_motion_collision, emitter_rate_manual e emitter_shape_entity_aabb. A consola lista-os pelo nome quando o modelo carrega. Os jogadores Bedrock continuam a ver o efeito completo.
Os modos de orientação correspondem aos billboards das entidades de apresentação. rotate_xyz, lookat_xyz e lookat_direction ficam virados para a câmara. rotate_y e lookat_y rodam apenas em torno do eixo vertical. direction_x, direction_y, direction_z e os modos emitter_transform_* mantêm uma orientação fixa a partir da direção da partícula ou da rotação do emissor.
Molang
As expressões suportam aritmética, comparações, ?:, ??, atribuições e return. Funções 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 e a constante math.pi.
A trigonometria funciona em graus, tal como no Bedrock. Variáveis incorporadas:
variable.particle_age,variable.particle_lifetime,variable.particle_random_1a_4variable.emitter_age,variable.emitter_lifetime,variable.emitter_random_1a_4
As suas próprias variáveis v. definidas em expressões de inicialização e scripts de fotogramas-chave funcionam, tal como as curvas (linear, catmull_rom, bezier, bezier_chain). As variáveis e consultas desconhecidas são lidas como 0.
Bedrock
Com sendCustomModelsToBedrockClientsV2 ativo, o conjunto Bedrock inclui cada efeito como particles/<model>_<effect>.json, com o identificador fmm:<model>_<effect>. Inclui também a textura das partículas, os localizadores nos ossos da geometria e os fotogramas-chave de partículas nas animações Bedrock. Os clientes Bedrock reproduzem então o efeito nativamente, incluindo os componentes que o Java ignora.
Para itens de mão, o FMM escreve assets/freeminecraftmodels/rspm_item_particles/display/<item>.json na sua saída Java. O ResourcePackManager lê-o ao converter o item e acrescenta ao attachable do item os localizadores e uma animação de partículas em ciclo.
Resolução de problemas
Particle effect '<effect>' ... was not found.
O FMM não encontrou o ficheiro de partículas. Coloque-o junto do modelo como <effect>.json ou <effect>.particle.json, ou com o nome de ficheiro guardado no fotograma-chave. Consulte Onde o FMM procura os ficheiros de partículas.
... uses <components>, which Java players do not see yet.
É apenas informativo. O Java reproduz tudo o resto do efeito, e o Bedrock reproduz o efeito completo.
... uses texture '<path>', which is not next to <file>.
Coloque o PNG da textura junto do ficheiro de partículas, com o nome do último segmento desse caminho.
... follows locator '<name>', which the model does not have.
O localizador foi renomeado ou eliminado. O efeito é reproduzido na origem do modelo até o fotograma-chave indicar um localizador existente.
As partículas do meu elemento decorativo nunca aparecem.
Os elementos decorativos só reproduzem idle por si próprios. Mova os fotogramas-chave para idle ou reproduza a animação a partir de um script.
As partículas do meu item de mão afastam-se do item na primeira pessoa. É o comportamento esperado no Java. O servidor coloca-as na mão de terceira pessoa. Os outros jogadores e as vistas de terceira pessoa veem-nas no item.
O meu item de mão não mostra partículas.
O item tem de ser um item personalizado do FMM (com fmm_item_id), e uma das animações do seu modelo tem de ter fotogramas-chave de partículas cujos ficheiros o FMM tenha encontrado.