
# GRIMÓRDIOS V1 — PARTE 1/4 ## BASE DO DATAPACK + SISTEMA DE MANA Crie a primeira parte de um datapack chamado **Grimórdios V1** para **Minecraft Java Edition 1.21.6**, usando **pack format 80**. IMPORTANTE: este é um projeto que será continuado em outras partes. **Não finalize nem simplifique o projeto removendo sistemas futuros.** Crie uma base organizada para receber as próximas partes. --- ## 1. REGRAS TÉCNICAS * Minecraft Java Edition 1.21.6. * Pack format 80. * 100% vanilla. * Sem mods, plugins, Fabric ou Forge. * Namespace: `grimordios`. * Usar a estrutura moderna: `data/grimordios/function/` * Usar sintaxe de comandos e componentes compatível com 1.21.6. * Não usar sintaxe antiga de itens. * Não usar comandos experimentais. * Não identificar livros apenas pelo nome. * Todos os livros deverão usar `custom_data` exclusivo. Exemplo: `custom_data={grimordios:{id:"tomo_abismo"}}` Crie: `data/minecraft/tags/function/load.json` `data/minecraft/tags/function/tick.json` Não coloque toda a lógica em uma única função. --- # 2. ESTRUTURA DE FUNÇÕES Organize o datapack para futuramente receber: `grimordios:load` `grimordios:setup` `grimordios:tick` `grimordios:mana` `grimordios:cooldown` `grimordios:chaos` Também prepare pastas para: * books * grimoires * rituals * knowledge * bestiary * chaos * admin Não é necessário implementar todo o conteúdo dessas pastas nesta parte, mas a arquitetura deve permitir adicioná-lo posteriormente. --- # 3. SISTEMA DE MANA Criar o scoreboard: `grimordios.mana` Também criar todos os scoreboards auxiliares necessários para controlar: * Mana atual; * Mana máxima; * progressão; * XP; * cooldowns; * controle interno. Cada jogador deve começar com: **Mana atual = 10** **Mana máxima = 10** --- # 4. PROGRESSÃO DA MANA A Mana máxima possui os seguintes níveis: **10 → 25 → 50 → 100 → 250 → 500 → 1000 → 2500 → 5000 → 10000** O máximo absoluto é: **10000** IMPORTANTE: ### MATAR MOBS = EVOLUIR A progressão da Mana máxima acontece através de **mortes de mobs causadas pelo jogador**. Não usar XP como método de aumentar diretamente a Mana máxima. ### XP = RECUPERAR MANA A XP deve ser utilizada para **recuperar a Mana atual**. Não confundir os dois sistemas. --- # 5. MANA ATUAL A Mana atual pode ser consumida pelas magias. Regras: * nunca permitir Mana negativa; * uma magia não funciona se a Mana atual for insuficiente; * não consumir Mana quando a magia falhar por falta de Mana; * mostrar aviso quando faltar Mana; * quando a Mana chegar a 0, o jogador deve morrer imediatamente. --- # 6. HUD DA MANA Criar uma HUD muito visível no **canto superior direito da tela**. Exibir: **MANA: 7 / 10** O valor deve atualizar automaticamente. Mostrar sempre: * Mana atual; * Mana máxima. A implementação precisa ser compatível com Minecraft Java 1.21.6 e realmente aparecer na região superior direita da tela. Não usar uma solução que coloque a Mana no chat como substituição da HUD. --- # 7. XP PARA RECUPERAÇÃO Criar um sistema que permita utilizar XP para recuperar Mana. A recuperação deve: * aumentar a Mana atual; * nunca passar da Mana máxima; * consumir XP de maneira controlada; * funcionar independentemente da progressão de Mana máxima. A progressão da Mana máxima continua sendo baseada em **matar mobs**. --- # 8. COOLDOWNS Criar uma estrutura de cooldowns independente para cada habilidade. Não usar um único cooldown para todos os livros. Preparar scoreboards/timers para que futuramente cada magia possa possuir seu próprio cooldown. --- # 9. SISTEMA DE LIVROS Criar uma estrutura para reconhecer livros através de: `custom_data` Nunca depender somente de: * nome; * lore; * material. Cada livro deverá ter um ID único. Exemplo: `tomo_abismo` `livro_almas` `codice_sangue` etc. Essa estrutura será usada nas próximas partes. --- # 10. COMANDOS ADMINISTRATIVOS Preparar os seguintes comandos: `/function grimordios:give_all` `/function grimordios:give_grimorios` `/function grimordios:give_magicos` `/function grimordios:give_nao_magicos` `/function grimordios:give_rituais` `/function grimordios:give_conhecimentos` `/function grimordios:reset` Nesta primeira parte, crie a estrutura necessária para eles existirem sem causar erro. As funções serão completadas nas próximas partes. --- # 11. RESET Criar: `grimordios:reset` Ele deverá: * resetar Mana; * resetar Mana máxima; * resetar cooldowns; * resetar estados temporários; * resetar o estado de Chaos futuramente; * não quebrar o datapack. --- # 12. LOAD E TICK `load` deve executar a configuração inicial. `tick` deve executar os sistemas que precisam ser atualizados continuamente. Evitar executar comandos pesados desnecessariamente a cada tick. O sistema deve ser eficiente para servidores. --- # 13. VALIDAÇÃO Antes de terminar esta parte: * verificar todos os JSONs; * verificar `load.json`; * verificar `tick.json`; * verificar todas as funções chamadas; * verificar todos os scoreboards; * verificar sintaxe 1.21.6; * verificar que não existem funções inexistentes; * verificar que o datapack carrega sem erro; * verificar que o sistema de Mana não pode ficar negativo; * verificar que a Mana máxima não passa de 10000. --- # 14. IMPORTANTE PARA AS PRÓXIMAS PARTES Não invente ou altere os livros definidos pelo projeto. As próximas partes irão adicionar: **PARTE 2:** Grimórios Mágicos. **PARTE 3:** Rituais, Conhecimentos e Bestiário. **PARTE 4:** Chaos, Totem do Chaos, evento cinematográfico, Ender Dragon, Withers, LumenFuchs Dummy e eventos especiais. Mantenha esta base modular para que essas partes possam ser adicionadas sem reescrever o datapack inteiro. Ao terminar esta parte, deixe o projeto salvo e pronto para receber a **PARTE 2/4**.