<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.dragonminez.com/pt/wiki/Add-on_Getting_Started?action=history&amp;feed=atom</id>
	<title>Add-on Getting Started/pt - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dragonminez.com/pt/wiki/Add-on_Getting_Started?action=history&amp;feed=atom"/>
	<link rel="alternate" type="text/html" href="https://wiki.dragonminez.com/pt/wiki/Add-on_Getting_Started?action=history"/>
	<updated>2026-10-25T14:31:50Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.dragonminez.com/pt/wiki/Add-on_Getting_Started?diff=13583&amp;oldid=prev</id>
		<title>Shokkoh: Translation sync from dragonminez-wiki repository</title>
		<link rel="alternate" type="text/html" href="https://wiki.dragonminez.com/pt/wiki/Add-on_Getting_Started?diff=13583&amp;oldid=prev"/>
		<updated>2026-10-13T22:26:26Z</updated>

		<summary type="html">&lt;p&gt;Translation sync from dragonminez-wiki repository&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Primeiros passos com addons&amp;#039;&amp;#039;&amp;#039; explica o que você precisa ter pronto &amp;#039;&amp;#039;antes&amp;#039;&amp;#039; de conectar seu próprio mod de Forge ao DragonMineZ: as versões das ferramentas, os mods que você deve evitar e as partes do DMZ em que um addon pode confiar com segurança. Leia antes de [[Special:MyLanguage/Creating a DMZ Addon|Criar um addon de DMZ]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Who_this_is_for&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Para quem é ==&lt;br /&gt;
Estas páginas são para desenvolvedores de addons de Forge que querem que o jar do seu mod reaja ao DMZ: 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. Se você só quer ajustar números ou adicionar raças, formas, missões ou desejos, não precisa de nada disso; veja [[Special:MyLanguage/Developer Scope and Prerequisites|Escopo e pré-requisitos]].&lt;br /&gt;
&lt;br /&gt;
O DMZ 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 (veja [[Special:MyLanguage/Custom Races|Raças personalizadas]] e [[Special:MyLanguage/Custom Forms|Formas personalizadas]]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Required_toolchain&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Ferramentas necessárias ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Requisito !! Versão !! Onde é declarado&lt;br /&gt;
|-&lt;br /&gt;
| Minecraft || &amp;lt;code&amp;gt;1.20.1&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;gradle.properties&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Forge || &amp;lt;code&amp;gt;47.4.10&amp;lt;/code&amp;gt; (aceita &amp;lt;code&amp;gt;[47,)&amp;lt;/code&amp;gt;) || &amp;lt;code&amp;gt;gradle.properties&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mods.toml&amp;lt;/code&amp;gt; do addon&lt;br /&gt;
|-&lt;br /&gt;
| ForgeGradle || &amp;lt;code&amp;gt;6.0.30&amp;lt;/code&amp;gt; || Plugins do &amp;lt;code&amp;gt;build.gradle.kts&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Java || &amp;lt;code&amp;gt;17&amp;lt;/code&amp;gt; || Toolchain do &amp;lt;code&amp;gt;build.gradle.kts&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Mappings || Parchment &amp;lt;code&amp;gt;2023.09.03-1.20.1&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;gradle.properties&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| GeckoLib || &amp;lt;code&amp;gt;4.8.3+&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;gradle.properties&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mods.toml&amp;lt;/code&amp;gt; do addon&lt;br /&gt;
|-&lt;br /&gt;
| TerraBlender || &amp;lt;code&amp;gt;3.0.1.10+&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;gradle.properties&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mods.toml&amp;lt;/code&amp;gt; do addon&lt;br /&gt;
|-&lt;br /&gt;
| Curios API || &amp;lt;code&amp;gt;5.14.1+1.20.1&amp;lt;/code&amp;gt; ou mais recente || &amp;lt;code&amp;gt;gradle.properties&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mods.toml&amp;lt;/code&amp;gt; do addon&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Use exatamente estas versões (ou faixas de versão compatíveis) no &amp;lt;code&amp;gt;build.gradle&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;build.gradle.kts&amp;lt;/code&amp;gt;, no &amp;lt;code&amp;gt;gradle.properties&amp;lt;/code&amp;gt; e no &amp;lt;code&amp;gt;mods.toml&amp;lt;/code&amp;gt; do seu addon; caso contrário, você terá erros de carregamento de classes e de mixins incompatíveis em tempo de execução. O DMZ está atualmente na versão &amp;lt;code&amp;gt;2.2-alpha&amp;lt;/code&amp;gt; do mod (&amp;lt;code&amp;gt;gradle.properties&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
GeckoLib, TerraBlender e Curios são dependências &amp;#039;&amp;#039;&amp;#039;obrigatórias&amp;#039;&amp;#039;&amp;#039; do DMZ, então também precisam estar no classpath de execução do seu ambiente de desenvolvimento.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Incompatible_mods&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Mods incompatíveis ==&lt;br /&gt;
O DMZ se recusa a iniciar (lança uma &amp;lt;code&amp;gt;IllegalStateException&amp;lt;/code&amp;gt; durante o carregamento) quando algum destes mods está instalado, e os declara como &amp;lt;code&amp;gt;incompatible&amp;lt;/code&amp;gt; no seu &amp;lt;code&amp;gt;mods.toml&amp;lt;/code&amp;gt;:&lt;br /&gt;
* Legendary Tooltips (&amp;lt;code&amp;gt;legendarytooltips&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Epic Fight (&amp;lt;code&amp;gt;epicfight&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Better Combat (&amp;lt;code&amp;gt;bettercombat&amp;lt;/code&amp;gt;)&lt;br /&gt;
Não dependa deles, não os inclua nem os adicione às suas configurações de execução de desenvolvimento.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Pre-release_builds&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Versões de pré-lançamento ==&lt;br /&gt;
&amp;lt;code&amp;gt;2.2-alpha&amp;lt;/code&amp;gt; é uma versão de pré-lançamento. As versões alpha e beta do DMZ só deixam entrar em um mundo ou servidor os nomes de usuário da lista de permissões. O nome de usuário de desenvolvimento padrão do ForgeGradle, &amp;lt;code&amp;gt;Dev&amp;lt;/code&amp;gt;, está na lista de permissões, então o &amp;lt;code&amp;gt;runClient&amp;lt;/code&amp;gt; funciona sem configurar nada: mantenha esse nome de usuário para seus testes locais.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Package_layout&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Estrutura de pacotes ==&lt;br /&gt;
Antes de escrever qualquer código de hook, dê uma olhada na estrutura do código-fonte (&amp;lt;code&amp;gt;AI/Context.md&amp;lt;/code&amp;gt; no repositório do DMZ a documenta em detalhes):&lt;br /&gt;
* &amp;lt;code&amp;gt;com.dragonminez.client&amp;lt;/code&amp;gt;: renderização, GUI e animação; só cliente.&lt;br /&gt;
* &amp;lt;code&amp;gt;com.dragonminez.common&amp;lt;/code&amp;gt;: configuração, estatísticas, rede, missões e desejos; a parte que a maioria dos addons usa.&lt;br /&gt;
* &amp;lt;code&amp;gt;com.dragonminez.server&amp;lt;/code&amp;gt;: comandos, armazenamento, geração de mundo e eventos de servidor.&lt;br /&gt;
* &amp;lt;code&amp;gt;com.dragonminez.mixin&amp;lt;/code&amp;gt;: mixins; evite depender deles em um addon.&lt;br /&gt;
Os addons devem se conectar quase exclusivamente a &amp;lt;code&amp;gt;com.dragonminez.common&amp;lt;/code&amp;gt;: é a camada compartilhada e a mais estável. Os únicos hooks do lado do cliente pensados para addons são &amp;lt;code&amp;gt;DMZClientEvent&amp;lt;/code&amp;gt; e os slots do Menu de Utilidades (veja [[Special:MyLanguage/Implementation and Events|Implementação e eventos]]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Two_integration_styles&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Duas formas de integração ==&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Dependência obrigatória:&amp;#039;&amp;#039;&amp;#039; seu addon exige que o DMZ esteja presente (&amp;lt;code&amp;gt;mandatory=true&amp;lt;/code&amp;gt; no &amp;lt;code&amp;gt;mods.toml&amp;lt;/code&amp;gt;). É a opção mais simples, mas seu addon não carrega sem o DMZ.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Dependência opcional:&amp;#039;&amp;#039;&amp;#039; seu addon funciona sozinho e só ativa o comportamento específico do DMZ quando o DMZ é detectado. O próprio DMZ usa esse padrão nas suas integrações opcionais (&amp;lt;code&amp;gt;common/compat/WeaponLevelingCompat.java&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;common/compat/ApotheosisCompat.java&amp;lt;/code&amp;gt;): verifique &amp;lt;code&amp;gt;ModList.get().isLoaded(&amp;quot;dragonminez&amp;quot;)&amp;lt;/code&amp;gt; uma única vez e mantenha toda classe que importa código do DMZ atrás dessa verificação. É o recomendado se o seu addon tem valor sem o DMZ instalado. Veja [[Special:MyLanguage/Implementation and Events#Optional dependency pattern|Padrão de dependência opcional]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;What_you_can_safely_rely_on&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== No que você pode confiar ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Eventos:&amp;#039;&amp;#039;&amp;#039; as classes aninhadas de &amp;lt;code&amp;gt;com.dragonminez.common.events.DMZEvent&amp;lt;/code&amp;gt; (servidor e comum) e &amp;lt;code&amp;gt;com.dragonminez.client.events.DMZClientEvent&amp;lt;/code&amp;gt; (cliente) são a superfície pública de hooks prevista. Veja [[Special:MyLanguage/Implementation and Events|Implementação e eventos]] para a lista completa.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Estado do jogador somente leitura:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;StatsCapability&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;StatsProvider&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;StatsData&amp;lt;/code&amp;gt;, para ler raça, forma, estatísticas e recursos.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Registros de extensão:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;QuestObjectiveRegistry&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;QuestRewardRegistry&amp;lt;/code&amp;gt; (tipos de conteúdo de missão personalizados), &amp;lt;code&amp;gt;DMZTextPlaceholders&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;%placeholders%&amp;lt;/code&amp;gt; personalizados em textos de missões e diálogos) e &amp;lt;code&amp;gt;UtilityMenuScreen.addMenuSlot&amp;lt;/code&amp;gt; (botões no Menu de Utilidades do cliente).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Registros:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;MainItems&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MainBlocks&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MainEntities&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MainAttributes&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MainEffects&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MainEnchants&amp;lt;/code&amp;gt; (e as outras classes &amp;lt;code&amp;gt;Main*&amp;lt;/code&amp;gt;) em &amp;lt;code&amp;gt;common/init/&amp;lt;/code&amp;gt; expõem referências &amp;lt;code&amp;gt;RegistryObject&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;DeferredRegister&amp;lt;/code&amp;gt; que você pode importar diretamente.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;What_to_avoid_relying_on&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== No que não convém confiar ==&lt;br /&gt;
* Valores enviados pelo cliente para qualquer coisa relacionada ao progresso. O DMZ também não confia neles; leia a capability do lado do servidor.&lt;br /&gt;
* Alterar campos de &amp;lt;code&amp;gt;StatsData&amp;lt;/code&amp;gt; diretamente fora de eventos ou comandos. Prefira reagir aos eventos ou cancelá-los em vez de mexer nos valores, e prefira os comandos existentes do DMZ quando precisar alterar algo que pertence ao DMZ.&lt;br /&gt;
* Registrar pacotes no canal de rede do DMZ. Os ids de pacote do DMZ dependem da ordem de registro; use seu próprio canal.&lt;br /&gt;
* Depender das classes de &amp;lt;code&amp;gt;com.dragonminez.mixin&amp;lt;/code&amp;gt; ou de partes internas do DMZ não mencionadas acima. Elas podem mudar sem aviso entre versões.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Next_step&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Próximo passo ==&lt;br /&gt;
Quando seu ambiente de desenvolvimento compilar contra o DMZ e você vir que ele é detectado em tempo de execução, siga para [[Special:MyLanguage/Implementation and Events|Implementação e eventos]] para conectar os hooks de verdade e depois para [[Special:MyLanguage/Creating a DMZ Addon|Criar um addon de DMZ]] para a configuração completa do Gradle e do &amp;lt;code&amp;gt;mods.toml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Navbox Add-ons}}&lt;/div&gt;</summary>
		<author><name>Shokkoh</name></author>
	</entry>
</feed>