Os modelos no Minecraft são codificados. Não há noção de hierarquia de blocos (apenas uma lista de blocos). Isso significa que as animações são feitas proceduralmente (de uma maneira muito básica) ou valores codificados com interpolação.
Existem alguns editores de modelos do Minecraft, como o Techne ou o FMCModeler, que permitem importar / exportar o código do modelo do Minecraft para mods, mas eles não suportam animações, pois provavelmente são tratados de maneira diferente para cada modelo.
Aqui está uma amostra rápida gerada com o FMCModeler:
//variables init:
public ModelRenderer box;
//constructor:
box = new ModelRenderer(0, 0);
box.addBox(0F, 0F, 0F, 16, 16, 16);
//render:
box.render(f5);
Uma maneira melhor de fazer isso seria criar um modelador completo baseado em bloco com algumas noções de hierarquia de blocos, para que você possa animar os modelos com quadros-chave e interpolação.
Atualmente, estou construindo uma ferramenta de criação de jogos multiplayer que faz exatamente isso (entre outras coisas, http://craftstud.io/ ). Ele já permite a construção de modelos estáticos texturizados complexos e mais está a caminho.
Aqui está um modelo complexo criado com o CraftStudio Como você pode ver, os blocos estão dispostos em uma árvore à direita:
Cada bloco é serializado em disco / pela rede com os seguintes dados:
- ID único
- ID do nó pai
- Posição (afeta os descendentes)
- Escala (afeta os descendentes)
- Ângulo (afeta descendentes)
- Deslocamento do ponto de articulação
- Tamanho do bloco
- Deslocamento da textura do bloco (deslocamento das coordenadas UV para a texturização)
Pretendo adicionar suporte à animação armazenando um mapa com nomes de animação como chave e uma lista de quadros-chave como valor. Cada quadro-chave será associado a um bloco e um valor para animar. Entre os quadros-chave, os valores devem ser interpolados (linearmente para posição ou esfericamente para ângulos, procure lerp e slerp).