Enchantment Creator
Visão geral
O Enchantment Creator adiciona encantamentos reais ao seu servidor, definidos inteiramente pelo painel web do TypeWriter. Eles são registrados no próprio registro de encantamentos do Minecraft, sob o namespace typewriter, então aparecem em itens, em bigornas e na mesa de encantamentos como os vanilla, sem resource pack nem plugin extra.
Você descreve o encantamento em uma entry de definição (nome, cor, itens compatíveis, nível máximo, custos, slots ativos) e depois lhe dá comportamento. Há duas formas: uma definição padrão executa triggers do TypeWriter enquanto o item encantado está vestido ou na mão, e uma definição personalizada lista mecânicas, cada uma reagindo a um evento do jogo (ataque, quebra de bloco, disparo de arco, dano de queda...) e executando ações. A extensão traz mais de 70 entries de ação prontas (roubo de vida, mineração de veios, flechas teleguiadas, armadura congelada...) que você conecta às mecânicas.
Recursos
- Encantamentos reais — registrados no registro de encantamentos do servidor, com nome colorido, nível máximo, custo na bigorna, peso e custos na mesa de encantamentos.
- Dois tipos de definição — baseada em triggers (
enchantment_definition) ou baseada em mecânicas (custom_enchantment_definition). - 16 eventos do jogo — ataque, defesa, quebra de bloco, disparo de arco, acerto de projétil, dano de queda, dano ao item, equipar armadura, movimento, agachar, correr e mais.
- Mais de 70 efeitos prontos — ações de armadura, arco, combate, ferramentas e especiais, cada uma com seus próprios campos.
- Livros encantados — entregue livros por uma ação ou por um comando, com nome e lore personalizados.
- Integração com o mundo — os livros aparecem em baús de loot gerados (
treasureChance) e em trocas com bibliotecários (tradeChance). - Mesa de encantamentos e bigorna — os encantamentos personalizados podem ser oferecidos pela mesa de encantamentos, restritos aos itens compatíveis e tornados mutuamente exclusivos na bigorna.
- Lista negra vanilla — remova da mesa de encantamentos os encantamentos vanilla escolhidos.
- Chance e nível por mecânica — execute uma mecânica apenas em uma porcentagem das vezes, ou apenas em um nível do encantamento.
- Partículas no cliente — uma ação de partículas exibida apenas para o jogador.
Instalação
- Use um servidor Paper 1.21 ou posterior, com Java 21. A extensão cria os encantamentos pelo registro do servidor, portanto não funciona em versões mais antigas.
- Certifique-se de que a extensão Basic do TypeWriter está instalada (veja a documentação do TypeWriter).
- Coloque o JAR do Enchantment Creator em
plugins/Typewriter/extensions/e reinicie o servidor.
Nenhum outro plugin é necessário.
Primeiros passos
Crie um encantamento de espada "Vampiric Strike" que cura quem a empunha a cada golpe:
- No painel web do TypeWriter, abra uma page manifest e adicione uma Custom Enchantment Definition.
- Defina
namecomoVampiric Strike,displayNamecomoVampiric Strike,nameColorcomodark_red,maxLevelcomo3e adicione os materiais de espada emsupportedItems. - Adicione uma entry de ação Lifesteal em uma page sequence e defina
healPercentagecomo0.2. - De volta à definição, adicione uma mecânica em
mechanics. DefinaeventcomoPLAYER_ATTACKe selecione a entry Lifesteal emactions. - Adicione uma ação Give Enchantment Book, selecione sua definição em
customEnchantmente definalevel. Publique. - Dispare a ação para obter o livro, ou execute
/enchantcreator give <player> Vampiric_Strike 2depois de adicionar um Enchantment Command Manifest. Combine o livro com uma espada em uma bigorna e golpeie um mob.
O efeito não escala sozinho com o nível do encantamento. Para deixar o nível 3 mais forte, adicione várias mecânicas com runOnLevel definido como 1, 2 e 3, cada uma executando uma ação com valores diferentes. runOnLevel 0 significa todos os níveis.
Como funciona
A extensão verifica todos os jogadores online a cada 5 ticks (um quarto de segundo) para saber quais dos seus encantamentos eles estão usando. Apenas a mão principal, a mão secundária e a armadura contam, e apenas itens cujo material esteja em supportedItems. O nível mais alto encontrado é o nível usado. Pode, portanto, passar um curto atraso entre equipar um item e seus efeitos começarem.
Os dois tipos de definição funcionam de maneira diferente:
- Uma definição padrão (
enchantment_definition) executaactiveTriggerspara o nível atual. ComcooldownEnabledativado, eles são executados novamente a cadacooldownenquanto o encantamento estiver ativo; com ele desativado, são executados uma vez quando o encantamento fica ativo.inactiveTriggerssão executados quando ele deixa de estar ativo. Oscriteriadevem passar. - Uma definição personalizada (
custom_enchantment_definition) executa suas mecânicas quando o evento do jogo correspondente acontece.
As entries de ação leem o evento do jogo que as disparou. Uma ação só faz algo quando é usada em uma mecânica com o evento para o qual foi escrita (por exemplo, Vein Miner só funciona em BLOCK_BREAK).
Eventos de encantamento
O event de uma mecânica é um destes:
| Evento | Dispara quando |
|---|---|
PLAYER_ATTACK | O jogador acerta diretamente uma entidade. |
PLAYER_DEFEND | O jogador sofre dano de uma entidade. |
SHIELD_BLOCK | O jogador é atingido enquanto bloqueia com um escudo. |
BLOCK_BREAK | O jogador quebra um bloco. |
BOW_SHOOT | O jogador atira com um arco ou besta. |
PROJECTILE_HIT | Um projétil atirado pelo jogador acerta algo. |
ITEM_CONSUME | O jogador come ou bebe. |
PLAYER_DEATH | O jogador morre. |
PLAYER_INTERACT | O jogador clica com o botão direito ou esquerdo. |
ARMOR_EQUIP | O jogador equipa ou desequipa uma armadura. |
ITEM_DAMAGE | Um item perde durabilidade. |
FALL_DAMAGE | O jogador sofre dano de queda. |
ENVIRONMENTAL_DAMAGE | O jogador sofre dano não causado por uma entidade (também dispara em dano de queda). |
PLAYER_MOVE | O jogador se move para outro bloco (verificado a cada quarto tick). |
SNEAK | O jogador começa a agachar. |
SPRINT | O jogador começa a correr. |
PLAYER_ATTACK dispara quando o jogador é o causador direto do dano, ou seja, em golpes corpo a corpo. O dano causado por uma flecha é causado pela flecha, então não dispara PLAYER_ATTACK na versão atual. As ações de flecha que leem um evento de dano (marcadas abaixo) só agem, portanto, em acertos diretos.
Ações prontas
Todas as entries de ação são usadas dentro de uma mecânica (actions) ou a partir de qualquer sequence. Cada uma tem os campos padrão criteria, modifiers e triggers, além de seus próprios campos: veja as páginas das entries. A coluna de evento indica qual event da mecânica a ação exige.
| Grupo | Ações | Evento |
|---|---|---|
| Combate | Armor Pierce, Beheading, Bleed, Blindness Strike, Cleave, Disarm, Executioner, Freeze Strike, Lifesteal, Lightning Strike, Poison Strike, Silence, Vampiric Aura, Wither Strike | PLAYER_ATTACK |
| Armadura, ao ser atingido | Deflect, Enlightened Armor, Evasion, Frozen Armor, Molten Armor, Regeneration Aura, Resistance Aura, Thorns Advanced, Toxic Aura, Voodoo Armor, Gearing | PLAYER_DEFEND |
| Armadura, dano | Angel Wings | FALL_DAMAGE |
| Armadura, dano | Implosion Armor, Curse of Vulnerability | qualquer evento de dano (PLAYER_DEFEND, FALL_DAMAGE, ENVIRONMENTAL_DAMAGE) |
| Armadura, equipar | Anti Knockback, Health Boost | ARMOR_EQUIP |
| Armadura, durabilidade | Hardened Armor | ITEM_DAMAGE |
| Arco, disparo | Homing Arrow, Volley Arrow | BOW_SHOOT |
| Arco, impacto | Explosive Arrow, Teleport Arrow | PROJECTILE_HIT |
| Arco, dano | Ender Arrow, Healing Arrow, Lightning Arrow, Piercing Shot, Pull Arrow, Push Arrow, Sniper Arrow, Venom Arrow, Web Arrow, Wither Arrow | PLAYER_ATTACK (somente acertos diretos, veja a nota) |
| Ferramentas | Area Miner, Auto Smelt, Experience Boost, Haste, Indestructible, Magnet, Oxygenate, Spawners Silk Touch, Telepathy, Timber, Treasure Hunter, Vein Miner | BLOCK_BREAK |
| Ferramentas | Bedrock Breaker, Green Thumb, Night Vision | PLAYER_INTERACT |
| Ferramentas | Agricultural Harvest | BLOCK_BREAK; colhe as plantações maduras ao redor do bloco quebrado (até radius 8) |
| Especiais | Aquatic Speed, Feeder, Lava Walker | PLAYER_MOVE |
| Especiais | Elytra Boost, Launch | PLAYER_INTERACT |
| Especiais | Curse of Sluggishness | PLAYER_ATTACK |
| Especiais | Elytra Shield | ENVIRONMENTAL_DAMAGE |
| Especiais | Soulbound | PLAYER_DEATH |
| Utilitários | Client Particle Effect, Give Enchantment Book | qualquer |
Comandos
O comando é uma entry Enchantment Command Manifest que você cria. O nome, a permissão e as mensagens dele são campos da entry; os padrões são mostrados.
| Comando | Descrição |
|---|---|
/enchantcreator give <player> <enchant> [level] | Entrega um livro encantado a um jogador online. <enchant> é o name ou displayName da entry, com sublinhados no lugar dos espaços. O nível padrão é 1. |
Permissões
| Permissão | Concede |
|---|---|
enchantcreator.admin | /enchantcreator give (o campo adminPermission da entry). |
Entries
75 entradas, geradas a partir do código-fonte da extensão.
Ações71
- Agricultural Harvest ActionOptimized action for harvesting crops in an AOE, replanting immediately, and merging drops.
- Angel Wings ActionReduces or completely negates fall damage
- Anti Knockback ActionProvides knockback resistance when equipped
- Aquatic Speed ActionDrastically increases movement speed underwater (Dolphin's Grace)
- Area Miner ActionMines blocks in a 3x3 area based on the block broken
- Armor Pierce ActionIgnores armor calculations during melee combat
- Auto Smelt ActionAutomatically smelts mined blocks and yields slightly more experience
- Bedrock Breaker ActionExtremely rare chance to successfully mine Bedrock when left-clicking it
- Beheading ActionHas a chance to drop the victim's head on kill
- Bleed ActionApplies a bleeding effect over time to the target
- Blindness Strike ActionBlinds the target struck
- Cleave ActionDeals area-of-effect (AoE) damage to enemies around the target
- Client Particle EffectRender a Typewriter-aware client particle effect
- Curse of Sluggishness ActionCurse: Applies Slowness and Weakness to the user when attacking
- Curse of Vulnerability ActionCurse: Multiplies all damage taken by the player
- Deflect ActionChance to deflect incoming projectiles back at the attacker
- Disarm ActionForces the attacked player to drop the item in their main hand
- Elytra Boost ActionGives a periodic boost while gliding with Elytra when right-clicking
- Elytra Shield ActionReduces kinetic damage taken from flying into walls
- Ender Arrow ActionDeals massive bonus true damage to End mobs (Enderman, Shulker, Dragon, Endermite)
- Enlightened Armor ActionHas a chance to heal you when attacked
- Evasion ActionGives a chance to completely dodge and cancel incoming damage
- Executioner ActionHas a chance to instantly kill targets below a certain health threshold
- Experience Boost ActionMined blocks drop extra experience
- Explosive Arrow ActionCauses a projectile to explode on impact without breaking blocks
- Feeder ActionPassively restores food while walking
- Freeze Strike ActionSlows and freezes the target
- Frozen Armor ActionSlows and freezes the attacker when they strike you
- Gearing ActionGrants brief speed when hit
- Give Enchantment BookGive a book with a custom enchantment
- Green Thumb ActionPassively bone-meals nearby crops when right-clicking
- Hardened Armor ActionHas a chance to ignore durability loss
- Haste ActionPassively grants Haste while breaking blocks
- Healing Arrow ActionHeals the target instead of damaging them
- Health Boost ActionGrants extra maximum health when equipped
- Homing Arrow ActionModifies a shot arrow to magnetically track the nearest enemy
- Implosion Armor ActionTriggers a massive shockwave when your health drops critically low
- Indestructible ActionHas a chance to repair the tool instead of taking damage when mining
- Launch ActionLaunches the player forward when right clicking with the item
- Lava Walker ActionFreezes lava under your feet into basalt temporarily
- Lifesteal ActionHeals the player based on the damage dealt
- Lightning Arrow ActionStrikes lightning where the arrow hits
- Lightning Strike ActionStrikes lightning on the hit target
- Magnet ActionSucks nearby items towards the player when mining
- Molten Armor ActionSets the attacker on fire when they strike you
- Night Vision ActionApplies Night Vision when interacting with the tool
- Oxygenate ActionRestores breath while breaking blocks underwater
- Piercing Shot ActionCauses the arrow to act as true damage, ignoring armor
- Poison Strike ActionPoisons the target struck
- Pull Arrow ActionPulls the struck target towards the shooter
- Push Arrow ActionInflicts massive knockback to the struck target
- Regeneration Aura ActionGrants passive regeneration when attacked
- Resistance Aura ActionGrants a defensive buff (resistance) when attacked in combat
- Silence ActionSilences the target, applying severe mining fatigue and weakness to prevent them from fighting back effectively
- Sniper Arrow ActionIncreases damage based on the distance the arrow traveled
- Soulbound ActionKeeps the enchanted item in your inventory upon death
- Spawners Silktouch ActionAllows the player to mine and collect Mob Spawners
- Telepathy ActionPlaces mined blocks and items directly into your inventory
- Teleport Arrow ActionTeleports the shooter to the arrow's impact location
- Thorns Advanced ActionReflects a percentage of incoming melee damage back to the attacker
- Timber ActionChops down an entire tree by breaking its bottom log
- Toxic Aura ActionEmits a toxic cloud, poisoning nearby enemies when you take heavy damage
- Treasure Hunter ActionMining simple blocks like Dirt or Stone has a chance to drop Emeralds
- Vampiric Aura ActionHeals all nearby allies when an enemy is killed
- Vein Miner ActionMines a vein of connected identical ores
- Venom Arrow ActionPoisons the target struck by the arrow
- Volley Arrow ActionShoots additional arrows in a cone shape
- Voodoo Armor ActionHas a chance to apply Weakness to the attacker
- Web Arrow ActionEncases the target in a temporary cobweb
- Wither Arrow ActionApplies wither effect to the target struck by the arrow
- Wither Strike ActionApplies wither effect to the target struck
Comandos1
- Enchantment Command ManifestAdmin command for giving custom enchantment books
Manifestos3
- Custom Enchantment DefinitionDefines a custom enchantment with modular mechanics
- Enchantment DefinitionDefines a custom enchantment
- Vanilla Enchantment Blacklist DefinitionBlacklist vanilla enchantments from the enchanting table
Solução de problemas
O efeito não faz nada. A ação deve corresponder ao event da mecânica (veja a tabela acima): uma ação que lê um evento de quebra de bloco não faz nada em PLAYER_ATTACK. O item deve estar em supportedItems, na mão ou vestido como armadura, e os criteria, chance e runOnLevel da mecânica devem passar. Uma mecânica com runOnLevel 2 só é executada quando o nível mais alto é exatamente 2.
O encantamento não existe no jogo. As definições são registradas quando a extensão inicia, quando um jogador entra e quando um livro é entregue. Verifique no console se há Failed to reflectively register ou Failed to register enchantments during pre-login e confirme que o servidor é Paper 1.21 ou posterior.
O livro não pode ser aplicado ao meu item. Na bigorna, um livro só pode ser aplicado a itens listados em supportedItems. Dois encantamentos listados no exclusiveWith um do outro não podem ser combinados: o resultado da bigorna é removido. Essa exclusividade só é aplicada na bigorna.
Os jogadores nunca veem meu encantamento na mesa de encantamentos. Na mesa, weight é usado como porcentagem: 1 significa cerca de 1% de chance por sorteio. Aumente-o, ou defina treasureChance e tradeChance para distribuir livros por meio de loot e bibliotecários. Um weight de 0 desativa a oferta na mesa.
/enchantcreator give diz que o encantamento é desconhecido. O nome é comparado com o name ou displayName da entry, em minúsculas e com os espaços trocados por sublinhados. Use o nome exato da entry e publique a page primeiro.
Um encantamento vanilla ainda aparece. A lista negra só remove ofertas da mesa de encantamentos; bigornas, loot e trocas não são afetados. O console informa Unable to resolve vanilla enchantments for blacklist se um nome for inválido.