<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.dragonminez.com/pt/wiki/Creating_a_DMZ_Addon?action=history&amp;feed=atom</id>
	<title>Creating a DMZ Addon/pt - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dragonminez.com/pt/wiki/Creating_a_DMZ_Addon?action=history&amp;feed=atom"/>
	<link rel="alternate" type="text/html" href="https://wiki.dragonminez.com/pt/wiki/Creating_a_DMZ_Addon?action=history"/>
	<updated>2026-10-25T13:01:38Z</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/Creating_a_DMZ_Addon?diff=19850&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/Creating_a_DMZ_Addon?diff=19850&amp;oldid=prev"/>
		<updated>2026-10-13T23:47:57Z</updated>

		<summary type="html">&lt;p&gt;Translation sync from dragonminez-wiki repository&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nova página&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Criar um addon de DMZ&amp;#039;&amp;#039;&amp;#039; guia você passo a passo por um addon de Forge completo que se integra ao DragonMineZ: o jar do seu próprio mod, que depende do DMZ e pode reagir aos seus eventos e dados. Leia primeiro [[Special:MyLanguage/Add-on Getting Started|Primeiros passos com addons]] para conhecer as ferramentas e versões necessárias.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Step_1:_Create_a_Forge_1.20.1_project&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Passo 1: Crie um projeto Forge 1.20.1 ==&lt;br /&gt;
Comece pelo MDK do Forge para Minecraft &amp;lt;code&amp;gt;1.20.1&amp;lt;/code&amp;gt; com Forge &amp;lt;code&amp;gt;47.4.10&amp;lt;/code&amp;gt;, ForgeGradle &amp;lt;code&amp;gt;6.0.30&amp;lt;/code&amp;gt; e Java &amp;lt;code&amp;gt;17&amp;lt;/code&amp;gt;, iguais aos do DMZ.&lt;br /&gt;
&lt;br /&gt;
Estes arquivos do repositório do DMZ são boas referências para a estrutura e a configuração do seu projeto:&lt;br /&gt;
* &amp;lt;code&amp;gt;gradle.properties&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;build.gradle.kts&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;src/main/resources/META-INF/mods.toml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Step_2:_Set_up_Gradle&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Passo 2: Configure o Gradle ==&lt;br /&gt;
O DMZ usa a DSL do Gradle em Kotlin (&amp;lt;code&amp;gt;build.gradle.kts&amp;lt;/code&amp;gt;), mas no seu addon você pode usar Gradle com Groovy ou qualquer outra configuração que preferir. Só garanta que as versões do Forge e do Java sejam as mesmas. Um exemplo de &amp;lt;code&amp;gt;build.gradle.kts&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
plugins {&lt;br /&gt;
    java&lt;br /&gt;
    idea&lt;br /&gt;
    id(&amp;quot;net.minecraftforge.gradle&amp;quot;) version &amp;quot;6.0.30&amp;quot;&lt;br /&gt;
    id(&amp;quot;org.parchmentmc.librarian.forgegradle&amp;quot;) version &amp;quot;1.+&amp;quot;&lt;br /&gt;
    id(&amp;quot;org.spongepowered.mixin&amp;quot;) version &amp;quot;0.7.38&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
repositories {&lt;br /&gt;
    maven(&amp;quot;https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/&amp;quot;) // GeckoLib&lt;br /&gt;
    maven(&amp;quot;https://maven.blamejared.com/&amp;quot;)                             // TerraBlender&lt;br /&gt;
    maven(&amp;quot;https://maven.theillusivec4.top/&amp;quot;)                          // Curios&lt;br /&gt;
    flatDir { dirs(&amp;quot;libs&amp;quot;) }                                            // local DMZ jar&lt;br /&gt;
    mavenCentral()&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
minecraft {&lt;br /&gt;
    mappings(&amp;quot;parchment&amp;quot;, &amp;quot;2023.09.03-1.20.1&amp;quot;)&lt;br /&gt;
    runs {&lt;br /&gt;
        configureEach {&lt;br /&gt;
            workingDirectory(project.file(&amp;quot;run&amp;quot;))&lt;br /&gt;
            // DMZ ships mixins: let the dev runtime remap their refmap&lt;br /&gt;
            property(&amp;quot;mixin.env.remapRefMap&amp;quot;, &amp;quot;true&amp;quot;)&lt;br /&gt;
            property(&amp;quot;mixin.env.refMapRemappingFile&amp;quot;, &amp;quot;${projectDir}/build/createSrgToMcp/output.srg&amp;quot;)&lt;br /&gt;
        }&lt;br /&gt;
        create(&amp;quot;client&amp;quot;)&lt;br /&gt;
        create(&amp;quot;server&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
dependencies {&lt;br /&gt;
    minecraft(&amp;quot;net.minecraftforge:forge:1.20.1-47.4.10&amp;quot;)&lt;br /&gt;
    annotationProcessor(&amp;quot;org.spongepowered:mixin:0.8.7:processor&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    // DMZ&amp;#039;s mandatory dependencies: GeckoLib, TerraBlender &amp;amp; Curios&lt;br /&gt;
    implementation(fg.deobf(&amp;quot;software.bernie.geckolib:geckolib-forge-1.20.1:4.8.3&amp;quot;))&lt;br /&gt;
    implementation(&amp;quot;com.eliotlash.mclib:mclib:20&amp;quot;)&lt;br /&gt;
    implementation(fg.deobf(&amp;quot;com.github.glitchfiend:TerraBlender-forge:1.20.1-3.0.1.10&amp;quot;))&lt;br /&gt;
    compileOnly(fg.deobf(&amp;quot;top.theillusivec4.curios:curios-forge:5.14.1+1.20.1:api&amp;quot;))&lt;br /&gt;
    runtimeOnly(fg.deobf(&amp;quot;top.theillusivec4.curios:curios-forge:5.14.1+1.20.1&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    // DragonMineZ itself (libs/dragonminez-2.2-alpha.jar)&lt;br /&gt;
    implementation(fg.deobf(&amp;quot;local:dragonminez:2.2-alpha&amp;quot;))&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Step_3:_Declare_the_DMZ_dependency&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Passo 3: Declare a dependência do DMZ ==&lt;br /&gt;
No &amp;lt;code&amp;gt;mods.toml&amp;lt;/code&amp;gt; do seu addon, adicione uma entrada de dependência para &amp;lt;code&amp;gt;dragonminez&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;toml&amp;quot;&amp;gt;&lt;br /&gt;
[[dependencies.your_addon_modid]]&lt;br /&gt;
    modId=&amp;quot;dragonminez&amp;quot;&lt;br /&gt;
    mandatory=true # false if your addon also works without DMZ&lt;br /&gt;
    versionRange=&amp;quot;[2.2-alpha]&amp;quot; # Only allow the DMZ version you built against to avoid compatibility issues.&lt;br /&gt;
    ordering=&amp;quot;AFTER&amp;quot;&lt;br /&gt;
    side=&amp;quot;BOTH&amp;quot; # Choose between &amp;quot;CLIENT&amp;quot;, &amp;quot;SERVER&amp;quot;, or &amp;quot;BOTH&amp;quot; based on your addon needs.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Defina &amp;lt;code&amp;gt;mandatory&amp;lt;/code&amp;gt; como &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; se o seu addon também funcionar sem o DMZ (veja [[Special:MyLanguage/Implementation and Events#Optional dependency pattern|Padrão de dependência opcional]]). O &amp;lt;code&amp;gt;mods.toml&amp;lt;/code&amp;gt; do DMZ usa &amp;lt;code&amp;gt;displayTest = &amp;quot;MATCH_VERSION&amp;quot;&amp;lt;/code&amp;gt;, então de qualquer forma o cliente e o servidor precisam rodar a mesma versão do DMZ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Step_4:_Add_DMZ_to_the_compile_classpath&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Passo 4: Adicione o DMZ ao classpath de compilação ==&lt;br /&gt;
O build do DMZ não publica um artefato Maven, então use um jar local durante o desenvolvimento:&lt;br /&gt;
# Baixe a versão do DMZ que você quer usar ou compile você mesmo com &amp;lt;code&amp;gt;./gradlew build&amp;lt;/code&amp;gt; no repositório do DMZ.&lt;br /&gt;
# Use o jar &amp;#039;&amp;#039;&amp;#039;sem classificador&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;dragonminez-&amp;lt;version&amp;gt;.jar&amp;lt;/code&amp;gt;): ele inclui as bibliotecas de banco de dados do DMZ. O jar &amp;lt;code&amp;gt;-slim&amp;lt;/code&amp;gt; não é feito para ser usado.&lt;br /&gt;
# Coloque-o na pasta &amp;lt;code&amp;gt;libs/&amp;lt;/code&amp;gt; do seu projeto e referencie-o com &amp;lt;code&amp;gt;fg.deobf(...)&amp;lt;/code&amp;gt; como mostrado acima, para que o ForgeGradle o remapeie para os seus mappings de desenvolvimento.&lt;br /&gt;
Use &amp;lt;code&amp;gt;compileOnly&amp;lt;/code&amp;gt; em vez de &amp;lt;code&amp;gt;implementation&amp;lt;/code&amp;gt; se você só quer compilar contra o DMZ e rodá-lo em uma instância separada.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Step_5:_Listen_to_DMZ_events&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Passo 5: Escute os eventos do DMZ ==&lt;br /&gt;
O DMZ publica seus eventos de Forge de servidor e comuns como classes aninhadas de &amp;lt;code&amp;gt;com.dragonminez.common.events.DMZEvent&amp;lt;/code&amp;gt;, e seus eventos de cliente como classes aninhadas de &amp;lt;code&amp;gt;com.dragonminez.client.events.DMZClientEvent&amp;lt;/code&amp;gt;. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
@Mod.EventBusSubscriber(modid = &amp;quot;your_addon_modid&amp;quot;, bus = Mod.EventBusSubscriber.Bus.FORGE)&lt;br /&gt;
public class DmzHooks {&lt;br /&gt;
    @SubscribeEvent&lt;br /&gt;
    public static void onTpGain(com.dragonminez.common.events.DMZEvent.TPGainEvent event) {&lt;br /&gt;
        // Example: increase TP gain by 10%&lt;br /&gt;
        int boosted = Math.round(event.getTpGain() * 1.10f);&lt;br /&gt;
        event.setTpGain(boosted);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Os arquivos-fonte dos eventos são &amp;lt;code&amp;gt;src/main/java/com/dragonminez/common/events/DMZEvent.java&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;src/main/java/com/dragonminez/client/events/DMZClientEvent.java&amp;lt;/code&amp;gt;. A lista completa, junto com os registros de objetivos e recompensas de missões, os placeholders de texto e os slots do Menu de Utilidades, está em [[Special:MyLanguage/Implementation and Events|Implementação e eventos]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Suggested_add-on_structure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Estrutura sugerida do addon ==&lt;br /&gt;
* &amp;lt;code&amp;gt;your/addon/MainModClass.java&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;your/addon/event/DmzHooks.java&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;src/main/resources/META-INF/mods.toml&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;src/main/resources/pack.mcmeta&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;First_milestone_checklist&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Checklist do primeiro marco ==&lt;br /&gt;
# O addon carrega sem crashar no cliente de desenvolvimento.&lt;br /&gt;
# O DMZ é detectado quando está presente.&lt;br /&gt;
# Um evento do DMZ é recebido nos logs.&lt;br /&gt;
# Uma mudança de comportamento fica visível no jogo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Compatibility_recommendations&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Recomendações de compatibilidade ==&lt;br /&gt;
* Proteja os trechos de código que só funcionam com o DMZ com verificações de presença do mod.&lt;br /&gt;
* Registre avisos claros no log quando o DMZ estiver ausente ou sua versão for incompatível.&lt;br /&gt;
* Não inclua nem dependa de Legendary Tooltips, Epic Fight ou Better Combat: o DMZ se recusa a iniciar junto com eles.&lt;br /&gt;
* Use seu próprio canal de rede e nunca confie no que o cliente envia para o progresso (veja [[Special:MyLanguage/Implementation and Events#Networking|Rede]]).&lt;br /&gt;
&lt;br /&gt;
{{Navbox Add-ons}}&lt;/div&gt;</summary>
		<author><name>Shokkoh</name></author>
	</entry>
</feed>