Datapack

GrimordiosPack

# 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:

Read the full description

`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**.

data/grimordios/function/load.mcfunction
scoreboard objectives add grimordios.mana dummy
scoreboard objectives add grimordios.mana_max dummy
scoreboard objectives add grimordios.mana_xp dummy
scoreboard objectives add grimordios.mana_prog dummy
scoreboard objectives add grimordios.cooldown dummy
scoreboard objectives add grimordios.state dummy
scoreboard objectives add grimordios.control dummy
scoreboard objectives add grimordios.hud dummy
scoreboard objectives add grimordios.tmp dummy
scoreboard objectives add grimordios.kills dummy

scoreboard objectives add grimordios.refill_xp dummy
scoreboard objectives add grimordios.refill_cost dummy
scoreboard objectives add grimordios.refill_amount dummy
scoreboard objectives add grimordios.maxcap dummy
scoreboard objectives add grimordios.phase dummy

scoreboard objectives add grimordios.deathcount deathCount
scoreboard objectives add grimordios.killed mobsKilled
scoreboard objectives add grimordios.used xpUsed

scoreboard players set #10 grimordios.control 10
scoreboard players set #25 grimordios.control 25
scoreboard players set #50 grimordios.control 50
scoreboard players set #100 grimordios.control 100
scoreboard players set #250 grimordios.control 250
scoreboard players set #500 grimordios.control 500
scoreboard players set #1000 grimordios.control 1000
scoreboard players set #2500 grimordios.control 2500
scoreboard players set #5000 grimordios.control 5000
scoreboard players set #10000 grimordios.control 10000

scoreboard players set #mana_cap grimordios.maxcap 10000
scoreboard players set #mana_init grimordios.mana 10
scoreboard players set #mana_init_max grimordios.mana_max 10
scoreboard players set #mana_zero grimordios.control 0
scoreboard players set #mana_one grimordios.control 1
scoreboard players set #mana_ten grimordios.control 10
scoreboard players set #mana_refill_cost grimordios.refill_cost 1
scoreboard players set #mana_refill_amount grimordios.refill_amount 1

function grimordios:setup