aetherENDescargar

Tu primer mod, paso a paso

En resumen: creas un proyecto, lo compilas y la DLL queda en la carpeta Aether/Mods del juego. Al abrir el juego, Aether lo encuentra solo. No hace falta ningún otro archivo de configuración.

1 · Crea el proyecto

Aether trae un comando que lo prepara todo:

aether new MiMod

Se crea una carpeta con tres archivos: MiMod.csproj (la receta para compilar), Mod.cs (tu mod) y un README.md corto. Si Aether encuentra tu juego, el proyecto ya sabe dónde están los archivos de Aether.

2 · Lee tu mod

El archivo Mod.cs ya hace tres cosas. Están numeradas en los comentarios (que vienen en inglés, igual que el código):

using System;
using Aether.Core.Config;
using Aether.Loader.Discovery;
using Aether.Loader.Entrypoints;
using Aether.Registry;

// This line is how Aether recognises your mod. It must stay at assembly level.
[assembly: AetherMod("mi_mod", "1.0.0",
    Name = "Mi Mod",
    Author = "You",
    Description = "A starter mod for Aether.")]

namespace MiMod;

public sealed class ModEntry : IModInitializer, IClientModInitializer
{
    // 1. An option the player can change (BepInEx/config/aether/mi_mod.json).
    public static readonly ConfigEntry<bool> EnableCustomBlock =
        AetherConfig.Bind("mi_mod", "Features", "EnableCustomBlock", true, "Register the example block.");

    // 2. Runs when mods load: the place to register blocks, items and recipes.
    public void OnInitialize()
    {
        if (!EnableCustomBlock.Value) return;

        var definition = new BlockDefinition(new Identifier("mi_mod", "gem_block"), "Gem Block")
        {
            Hardness = 3.0f,
            IsSolid = true
        };
        DynamicBlockRegistry.Instance.Register(definition);
    }

    // 3. Runs on the first frame, with the game alive: UI, keys, sound and scene objects go here.
    public void OnInitializeClient()
    {
        Console.WriteLine("[MiMod] ready");
    }
}
  1. Una opción que el jugador puede cambiar.
  2. Registra un bloque nuevo, «Gem Block», cuando cargan los mods.
  3. Aquí va lo que se ve y se toca (interfaz, teclas, sonido), cuando el juego ya está vivo.

La línea [assembly: AetherMod(…)] es la que le dice a Aether que esto es un mod. Debe quedarse a nivel de ensamblado.

3 · Cambia algo

Prueba con lo más simple: cambia el nombre "Gem Block" por otro, o el número de Hardness (qué tan duro es el bloque). Guarda el archivo.

4 · Revisa dónde está Aether

El proyecto busca los archivos de Aether en <juego>/BepInEx/plugins/Aether/. Si aether new no encontró tu juego, abre MiMod.csproj y cambia AetherDir, o compila con -p:AetherDir=<ruta>. Si Aether no está instalado, la compilación se detiene con un mensaje que te lo dice.

5 · Compila e instala

cd MiMod
dotnet build MiMod.csproj -c Release -p:InstallToGame=true

Con -p:InstallToGame=true la DLL se copia sola a <juego>/Aether/Mods/. Sin esa opción, copia tú bin/Release/netstandard2.1/MiMod.dll a esa carpeta.

6 · Compruébalo

Abre el juego. Tu mod debe aparecer en el menú F10 y en el registro BepInEx/LogOutput.log con una línea como esta:

[Aether] Resolved N mods in topological order:
  -> Mi Mod (mi_mod v1.0.0)

¿No aparece? Mira Compilar e instalar, que tiene la lista de qué revisar.