<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.dragonminez.com/es/wiki/Creating_a_DMZ_Addon?action=history&amp;feed=atom</id>
	<title>Creating a DMZ Addon/es - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dragonminez.com/es/wiki/Creating_a_DMZ_Addon?action=history&amp;feed=atom"/>
	<link rel="alternate" type="text/html" href="https://wiki.dragonminez.com/es/wiki/Creating_a_DMZ_Addon?action=history"/>
	<updated>2026-10-26T19:55:49Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.dragonminez.com/es/wiki/Creating_a_DMZ_Addon?diff=19772&amp;oldid=prev</id>
		<title>Shokkoh: Translation sync from dragonminez-wiki repository</title>
		<link rel="alternate" type="text/html" href="https://wiki.dragonminez.com/es/wiki/Creating_a_DMZ_Addon?diff=19772&amp;oldid=prev"/>
		<updated>2026-10-13T23:47:13Z</updated>

		<summary type="html">&lt;p&gt;Translation sync from dragonminez-wiki repository&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Crear un addon de DMZ&amp;#039;&amp;#039;&amp;#039; te guía paso a paso por un addon de Forge completo que se integra con DragonMineZ: el jar de tu propio mod, que depende de DMZ y puede reaccionar a sus eventos y datos. Lee primero [[Special:MyLanguage/Add-on Getting Started|Primeros pasos con addons]] para conocer las herramientas y versiones necesarias.&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;
== Paso 1: Crea un proyecto de Forge 1.20.1 ==&lt;br /&gt;
Parte del MDK de Forge para Minecraft &amp;lt;code&amp;gt;1.20.1&amp;lt;/code&amp;gt; con 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; y Java &amp;lt;code&amp;gt;17&amp;lt;/code&amp;gt;, igual que DMZ.&lt;br /&gt;
&lt;br /&gt;
Estos archivos del repositorio de DMZ son buenas referencias para la estructura y la configuración de tu proyecto:&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;
== Paso 2: Configura Gradle ==&lt;br /&gt;
DMZ usa el DSL de Gradle en Kotlin (&amp;lt;code&amp;gt;build.gradle.kts&amp;lt;/code&amp;gt;), pero para tu addon puedes usar Gradle con Groovy o cualquier otra configuración que prefieras. Solo asegúrate de que las versiones de Forge y Java coincidan. Un ejemplo 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;
== Paso 3: Declara la dependencia de DMZ ==&lt;br /&gt;
En el &amp;lt;code&amp;gt;mods.toml&amp;lt;/code&amp;gt; de tu addon, añade una entrada de dependencia 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;
Pon &amp;lt;code&amp;gt;mandatory&amp;lt;/code&amp;gt; en &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; si tu addon también funciona sin DMZ (consulta [[Special:MyLanguage/Implementation and Events#Optional dependency pattern|Patrón de dependencia opcional]]). El &amp;lt;code&amp;gt;mods.toml&amp;lt;/code&amp;gt; de DMZ usa &amp;lt;code&amp;gt;displayTest = &amp;quot;MATCH_VERSION&amp;quot;&amp;lt;/code&amp;gt;, así que de todos modos el cliente y el servidor deben usar la misma versión de 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;
== Paso 4: Añade DMZ al classpath de compilación ==&lt;br /&gt;
La compilación de DMZ no publica un artefacto de Maven, así que usa un jar local durante el desarrollo:&lt;br /&gt;
# Descarga la versión de DMZ a la que apuntas o compílala tú mismo con &amp;lt;code&amp;gt;./gradlew build&amp;lt;/code&amp;gt; en el repositorio de DMZ.&lt;br /&gt;
# Usa el jar &amp;#039;&amp;#039;&amp;#039;sin clasificador&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;dragonminez-&amp;lt;version&amp;gt;.jar&amp;lt;/code&amp;gt;): incluye las librerías de base de datos de DMZ. El jar &amp;lt;code&amp;gt;-slim&amp;lt;/code&amp;gt; no está pensado para usarse.&lt;br /&gt;
# Ponlo en la carpeta &amp;lt;code&amp;gt;libs/&amp;lt;/code&amp;gt; de tu proyecto y referéncialo con &amp;lt;code&amp;gt;fg.deobf(...)&amp;lt;/code&amp;gt; como se muestra arriba, para que ForgeGradle lo remapee a tus mappings de desarrollo.&lt;br /&gt;
Usa &amp;lt;code&amp;gt;compileOnly&amp;lt;/code&amp;gt; en lugar de &amp;lt;code&amp;gt;implementation&amp;lt;/code&amp;gt; si solo quieres compilar contra DMZ y ejecutarlo desde una instancia aparte.&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;
== Paso 5: Escucha los eventos de DMZ ==&lt;br /&gt;
DMZ publica sus eventos de Forge de servidor y comunes como clases anidadas de &amp;lt;code&amp;gt;com.dragonminez.common.events.DMZEvent&amp;lt;/code&amp;gt;, y sus eventos de cliente como clases anidadas de &amp;lt;code&amp;gt;com.dragonminez.client.events.DMZClientEvent&amp;lt;/code&amp;gt;. Por ejemplo:&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;
Los archivos fuente de los eventos son &amp;lt;code&amp;gt;src/main/java/com/dragonminez/common/events/DMZEvent.java&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;src/main/java/com/dragonminez/client/events/DMZClientEvent.java&amp;lt;/code&amp;gt;. La lista completa, junto con los registros de objetivos y recompensas de misiones, los placeholders de texto y las ranuras del menú de utilidades, está en [[Special:MyLanguage/Implementation and Events|Implementación y 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;
== Estructura sugerida del 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;
== Lista de comprobación del primer hito ==&lt;br /&gt;
# El addon carga sin crashear en el cliente de desarrollo.&lt;br /&gt;
# DMZ se detecta cuando está presente.&lt;br /&gt;
# Se recibe un evento de DMZ en los logs.&lt;br /&gt;
# Se ve un cambio de comportamiento en el juego.&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;
== Recomendaciones de compatibilidad ==&lt;br /&gt;
* Protege las partes del código que solo funcionan con DMZ con comprobaciones de presencia del mod.&lt;br /&gt;
* Registra advertencias claras en el log cuando falte DMZ o su versión sea incompatible.&lt;br /&gt;
* No incluyas ni dependas de Legendary Tooltips, Epic Fight o Better Combat: DMZ se niega a iniciar junto a ellos.&lt;br /&gt;
* Usa tu propio canal de red y nunca confíes en lo que envía el cliente para el progreso (consulta [[Special:MyLanguage/Implementation and Events#Networking|Red]]).&lt;br /&gt;
&lt;br /&gt;
{{Navbox Add-ons}}&lt;/div&gt;</summary>
		<author><name>Shokkoh</name></author>
	</entry>
</feed>