Encantamentos personalizados sem mods: o formato de encantamento orientado por dados
Os encantamentos viraram JSON de datapack, então um encantamento personalizado não precisa de mod. Veja o formato do arquivo, os componentes de efeito que realmente fazem algo e como torná-lo obtenível.
Os encantamentos costumavam ser fixos no código. Agora são dados de datapack, o que significa que um encantamento genuinamente personalizado — novo nome, novo efeito, nova curva de custo — é um arquivo JSON.
Onde ele fica
data/<namespace>/enchantment/lightning_strike.json
No singular enchantment/, como toda outra categoria de datapack desde a renomeação.
O arquivo mínimo
{
"description": { "translate": "enchantment.my_pack.lightning_strike" },
"supported_items": "#minecraft:enchantable/melee_weapon",
"weight": 2,
"max_level": 3,
"min_cost": { "base": 10, "per_level_above_first": 10 },
"max_cost": { "base": 50, "per_level_above_first": 10 },
"anvil_cost": 4,
"slots": ["mainhand"]
}
Só isso já dá um encantamento de verdade, que carrega e aparece no item. Ele ainda não faz nada — o comportamento é separado — e a mesa não vai oferecê-lo até que ele seja marcado com a tag (abaixo).
weighté a raridade na Mesa de Encantamentos. O vanilla usa 10 para comum e 1 para muito raro. É relativo, não uma porcentagem.slotsdecide onde o encantamento fica ativo:mainhand,offhand,armor,head, e assim por diante. É obrigatório: se você omitir, o arquivo não carrega.supported_itemsaceita uma tag de item ou uma lista. As tags#minecraft:enchantable/*já existem para os grupos que fazem sentido —melee_weapon,sharp_weapon,mining,armore assim por diante. Não existeenchantable/sword; uma tag que não existe faz o arquivo falhar.
Fazendo ele fazer algo
effects anexa comportamento:
"effects": {
"minecraft:post_attack": [{
"enchanted": "attacker",
"affected": "victim",
"effect": { "type": "minecraft:run_function", "function": "my_pack:strike" },
"requirements": { "condition": "minecraft:random_chance", "chance": 0.25 }
}]
}
post_attack precisa saber de quem é o encantamento (enchanted) e em quem o efeito cai (affected) — os dois são obrigatórios. run_function é a saída de emergência — tudo o que uma função pode fazer, o encantamento pode fazer. Os tipos de efeito nativos cobrem dano, repulsão, durabilidade, drops de itens e atributos sem precisar de função nenhuma, e são mais baratos.
requirements aceita qualquer predicate, então condicionar ao tipo do alvo, ao clima ou a uma chance aleatória é um bloco de JSON.
Dando um nome a ele
description é um componente de texto, então um nome fixo no código funciona:
"description": { "text": "Lightning Strike", "color": "gold" }
mas uma chave translate mais um arquivo de idioma em um pacote de recursos é o que faz ele ser lido corretamente por jogadores de outros idiomas — o mesmo motivo pelo qual este site tira os termos de jogo das próprias traduções da Mojang.
Tornando-o obtenível
Três caminhos, e você normalmente vai querer mais de um:
- Mesa de Encantamentos — depois que
weighte a curva de custo estiverem definidos e o encantamento estiver em#minecraft:in_enchanting_table. - Tabelas de loot —
enchant_randomlycom o seu encantamento listado, ouenchant_with_levelsse ele deve competir por custo. - Aldeão troca — um Livro Encantado com o seu encantamento no item da troca.
Adicioná-lo a #minecraft:in_enchanting_table é o que faz a mesa oferecê-lo; é fácil esquecer a tag e acabar com um encantamento que existe, mas nunca aparece.
Monte o JSON do encantamento e o equivalente dele para enfeite de armadura, com as tags e os slots definidos, no Custom Enchantment & Trim Builder.