Add-on Development/pt: Difference between revisions

From DragonMineZ Wiki
Shokkoh (talk | contribs)
Translation sync from dragonminez-wiki repository
 
Shokkoh (talk | contribs)
Translation sync from dragonminez-wiki repository
 
(One intermediate revision by the same user not shown)
Line 15: Line 15:
== O projeto ==
== O projeto ==
<div class="dmz-cards">
<div class="dmz-cards">
{{Card|Contributing|<span lang="en" dir="ltr" class="mw-content-ltr">Report bugs, suggest features, build the mod and open pull requests.</span>}}
{{Card|Contributing|Reporte bugs, sugira recursos, compile o mod e abra pull requests.}}
{{Card|Security Policy|<span lang="en" dir="ltr" class="mw-content-ltr">How to report a vulnerability and how to keep a server safe.</span>}}
{{Card|Security Policy|Como reportar uma vulnerabilidade e como manter um servidor seguro.}}
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Reading_order"></span>
== Reading order ==
== Ordem de leitura ==
</div>
# [[Special:MyLanguage/Add-on Getting Started|Primeiros passos com addons]]: use as mesmas versões das ferramentas e garanta que seu ambiente de desenvolvimento compile contra o DMZ.
<div lang="en" dir="ltr" class="mw-content-ltr">
# [[Special:MyLanguage/Implementation and Events|Implementação e eventos]]: conecte os hooks de verdade.
# [[Special:MyLanguage/Add-on Getting Started|Add-on Getting Started]]: match the toolchain and make sure your development environment builds against DMZ.
# [[Special:MyLanguage/Creating a DMZ Addon|Criar um addon de DMZ]]: a configuração completa do Gradle e do <code>mods.toml</code>.
# [[Special:MyLanguage/Implementation and Events|Implementation and Events]]: wire up the actual hooks.
# [[Special:MyLanguage/Creating a DMZ Addon|Creating a DMZ Addon]]: the full Gradle and <code>mods.toml</code> setup.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Ground_rules_for_add-ons"></span>
== Ground rules for add-ons ==
== Regras básicas para addons ==
</div>
* Conecte-se quase exclusivamente a <code>com.dragonminez.common</code>: é a camada compartilhada e a mais estável. No cliente, os únicos hooks pensados para addons são <code>DMZClientEvent</code> e os slots do Menu de Utilidades.
<div lang="en" dir="ltr" class="mw-content-ltr">
* Prefira reagir aos eventos do DMZ (alterando seus campos editáveis ou cancelando-os) a alterar os dados do DMZ diretamente.
* Hook <code>com.dragonminez.common</code> almost exclusively: it is the shared, most stable layer. On the client, the only hooks meant for add-ons are <code>DMZClientEvent</code> and the utility menu slots.
* Registre seu próprio canal de rede; nunca adicione pacotes ao canal do DMZ.
* Prefer reacting to DMZ events (changing their settable fields, or cancelling them) over changing DMZ data directly.
* Nunca confie no que o cliente envia para estatísticas, desbloqueios, missões, desejos ou progresso: valide no servidor.
* Register your own network channel; never add packets to DMZ's channel.
* Não dependa das classes de <code>com.dragonminez.mixin</code> nem de partes internas do DMZ que as guias não mencionam; elas podem mudar sem aviso entre versões.
* Never trust client input for stats, unlocks, quests, wishes or progression: validate it on the server.
* Não inclua nem dependa de Legendary Tooltips, Epic Fight ou Better Combat: o DMZ se recusa a iniciar junto com eles.
* Don't depend on <code>com.dragonminez.mixin</code> classes or on DMZ internals that the guides don't mention; they can change without notice between versions.
* Don't bundle or depend on Legendary Tooltips, Epic Fight or Better Combat: DMZ refuses to start alongside them.
</div>


__NOTOC__
__NOTOC__
{{Navbox Add-ons}}
{{Navbox Add-ons}}

Latest revision as of 22:25, 13 October 2026

O desenvolvimento de addons consiste em escrever seu próprio mod de Forge que depende do DragonMineZ e reage a ele: conceder TP extra, escutar mudanças de forma, adicionar novos tipos de objetivos e recompensas de missões, adicionar botões ao Menu de Utilidades e assim por diante. Estas páginas são para desenvolvedores Java que sabem rodar um ambiente de desenvolvimento do Forge 1.20.1.

Se você só quer ajustar números ou adicionar raças, formas, missões ou desejos, não precisa de nada disso: veja Conteúdo próprio. O DragonMineZ não tem uma API Java para registrar novas raças, formas, habilidades ou técnicas; novas raças e formas são adicionadas por arquivos de configuração JSON.

Guias

Imagem pendente
Para quem são estas páginas, as duas formas de estender o DMZ e a configuração básica.
Imagem pendente
Versões das ferramentas, mods incompatíveis e no que um addon pode confiar com segurança.
Imagem pendente
Todos os eventos do DMZ, como ler o estado do jogador, registros de extensão e rede.
Imagem pendente
Configure o projeto Gradle, declare a dependência e receba seu primeiro evento.

O projeto

Imagem pendente
Reporte bugs, sugira recursos, compile o mod e abra pull requests.
Imagem pendente
Como reportar uma vulnerabilidade e como manter um servidor seguro.

Ordem de leitura

  1. Primeiros passos com addons: use as mesmas versões das ferramentas e garanta que seu ambiente de desenvolvimento compile contra o DMZ.
  2. Implementação e eventos: conecte os hooks de verdade.
  3. Criar um addon de DMZ: a configuração completa do Gradle e do mods.toml.

Regras básicas para addons

  • Conecte-se quase exclusivamente a com.dragonminez.common: é a camada compartilhada e a mais estável. No cliente, os únicos hooks pensados para addons são DMZClientEvent e os slots do Menu de Utilidades.
  • Prefira reagir aos eventos do DMZ (alterando seus campos editáveis ou cancelando-os) a alterar os dados do DMZ diretamente.
  • Registre seu próprio canal de rede; nunca adicione pacotes ao canal do DMZ.
  • Nunca confie no que o cliente envia para estatísticas, desbloqueios, missões, desejos ou progresso: valide no servidor.
  • Não dependa das classes de com.dragonminez.mixin nem de partes internas do DMZ que as guias não mencionam; elas podem mudar sem aviso entre versões.
  • Não inclua nem dependa de Legendary Tooltips, Epic Fight ou Better Combat: o DMZ se recusa a iniciar junto com eles.