Modding:Guía del Modder/APIs/Mod structure

De Stardew Valley Wiki
Ir a la navegación Ir a la búsqueda

Creación de mods SMAPI SMAPI mascot.png


Modding:Índice

Consulte Modding:Guía del Modder para obtener una introducción a la creación de un mod SMAPI. Esta es una página de referencia técnica que asume que ya ha seguido esa guía.

Estructura basica

Un mod SMAPI debe tener...

  1. un archivo DLL compilado que contiene el código para ejecutar como parte del mod (vea la entrada del mod a continuación);
  2. un archivo manifest.json que describe el mod.

Opcionalmente puede tener...

  1. cualquier número de archivos compiled.dll y .pdb a los que hace referencia el DLL del mod principal;
  2. una carpeta i18n que contiene las traducciones;
  3. cualquier número de archivos personalizados utilizados por el código mod (generalmente una carpeta assets por convención).

Entrada de mod

El proyecto mod principal debe tener una subclase de StardewModdingAPI.Mod. La clase a menudo se nombra ModEntry por convención, pero puede usar cualquier nombre de C# válido. La clase debe implementar un método Entryque SMAPI llamará una vez que se cargue el mod. El helper proporciona acceso a casi todas las APIs de SMAPI (disponible como this.Helper en otros métodos).

Aquí está la implementación mínima posible (que no hace nada en absoluto):

using StardewModdingAPI;

/// <summary>El punto de entrada del mod.</summary>
public class ModEntry : Mod
{
    /// <summary>El punto de entrada del mod, al que se llama después de cargar el mod por primera vez.</summary>
    /// <param name="helper">Proporciona APIs simplificadas para escribir mods.</param>
    public override void Entry(IModHelper helper)
    {
        
    }
}

El método Entry se llama muy temprano en el proceso de ejecución, por lo que algunas cosas aún no se han inicializado. Puedes usar eventos como GameLaunched, SaveLoaded, o DayStarted para acceder a todas las funciones. Este es un breve resumen del uso de las APIs en Entry:

característica estado
La mayoría de las APIs de SMAPI ✓ disponible. Eso incluye el registro de controladores de eventos, lectura de la configuración, carga de assets, y la obtención de información de mod.
helper.ModRegistry.GetApi ✖ No disponible, ya que algunas mods aún no se han inicializado..
Campos del juego ✖ No disponible de forma fiable, ya que los mods se cargan al principio del proceso. Eso incluye campos básicos como Game1.objectInformation.

Dependencias

La mayoría de los mods son independientes y solo tienen un archivo DLL, pero ese no es un límite estricto. Estos son algunos patrones comunes:

  • Declare una dependencia de otro mod, y SMAPI cargará el otro mod antes que el suyo y mostrará un error amistoso si no está instalado. Puede [Modding:Guía del Modder/APIs/Integración|usar una API proporcionada por mod]] si el mod tiene una, o hacer referencia a la DLL directamente. (Si hace referencia a una DLL mod, asegúrese de que no esté marcada como 'copy local'para evitar problemas; SMAPI cargará la versión instalada en su lugar).
  • Cree un proyecto compartido y haga referencia a él desde su proyecto mod. El código del proyecto compartido se compilará como parte de su proyecto de modificación (por lo que será una DLL que contenga ambos proyectos en la carpeta de modificación).
  • Haga referencia a projects/DLLs y copie sus DLL en su carpeta mod. SMAPI detectará la referencia y cargará las DLL desde su carpeta mod automáticamente. No haga esto para hacer referencia a un mod — ya que puede causar errores confusos cuando hay varias versiones disponibles (vea la primera opción en su lugar).