Saltar para o conteúdo principal

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​

  1. Crie o efeito no editor de partículas do Blockbench (Snowstorm) e guarde-o como ficheiro de partículas .json.
  2. 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.
  3. 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;.
  4. Coloque o ficheiro de partículas e o PNG da sua textura junto do .bbmodel (ou numa pasta particles/ 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:

  1. O nome de ficheiro guardado no fotograma-chave
  2. <effect>.particle.json
  3. <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 filmicMode manté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 held do modelo enquanto o item está em qualquer das mãos. Sem uma animação held com 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 scale e 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 em textures/entity/fmm_particles/<model>/<effect>.png. O FMM escreve também assets/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, maxParticlesPerEmitter partículas, ou o max_particles do próprio ficheiro quando este for inferior. A um jogador Java são mostradas, no máximo, maxParticlesPerViewer partículas, somando todos os modelos. Acima desse limite, as novas partículas desse jogador são ignoradas até as mais antigas expirarem.
  • particleEffectsEnabled: false desativa todos os efeitos sem editar os modelos.

Componentes suportados no Java​

ComponenteSuporte no Java
emitter_rate_instant, emitter_rate_steadyCompleto
emitter_lifetime_once, emitter_lifetime_looping, emitter_lifetime_expressionCompleto
emitter_initializationExpressões de criação e por atualização
emitter_local_spacePosição e rotação
emitter_shape_point, _sphere, _box, _disc, _customDesvio, raio, meias dimensões, normal do plano, surface_only e direção outwards, inwards ou personalizada
particle_initializationExpressões por atualização e por renderização
particle_initial_speed, particle_initial_spinCompleto
particle_motion_dynamicAceleração e arrasto lineares, aceleração e arrasto de rotação
particle_lifetime_expressionmax_lifetime e expiration_expression
particle_appearance_billboardTamanho, modo de orientação, direção e UV, incluindo flipbooks
particle_appearance_tintingCores fixas, expressões por canal e gradientes
particle_appearance_lightingDesativa 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_1 a _4
  • variable.emitter_age, variable.emitter_lifetime, variable.emitter_random_1 a _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.