Configurando Extensiones
Los archivos de configuración les permiten a las extensiones almacenar datos, así como permiten a los administradores de servidor tomar fácilmente el control de determinadas partes de una extensión, si decides dejar que lo hagan. Sponge utiliza Configurate para que puedas manipular fácilmente los archivos de configuración. Estas páginas te explicarán cómo utilizar Configurate para utilizar los archivos de configuración al máximo.
Truco
Mira la wiki oficial de Configurate para obtener información mas detallada sobre como trabajar con sus componentes.
Nota
Esponja hace uso del formato de configuración HOCON, un super conjunto de JSON, como formato predeterminado para guardar los archivos de configuración. El resto de esta guía asumirá que también usas HOCON. Ve :doc:”… /.. /Server/Getting-Started/Configuration/hocon” más información sobre el formato HOCON. El trabajo con diferentes formatos es hecho de forma relativamente similar por el sistema de configuración, así que no debería presentar demasiado problema si utilizas un formato alternativo en su lugar.
Inicio Rápido
Creando una Configuración de Extensión por Defecto
Las extensiones que usan la API Sponge tienen la opción de usar uno o mas archivos de configuración. Los archivos de configuración le permiten a las extensiones almacenar datos, y le permiten a los administradores de servidor personalizar opciones de extensión (si son aplicables).
Creando tu Configuración de Extensión por Defecto
La API de Sponge ofrece el uso de la anotación :javadoc:`DefaultConfig`en un campo o método setter con el tipo ``Path`` para obtener el archivo de configuración por defecto para tu extensión.
La anotación @DefaultConfig
requiere un sharedRoot
booleano. Si configuras un``sharedRoot`` a true
, entonces el nombre de ruta devuelto estará en un directorio de configuración compartida. En ese caso, el archivo de configuración de tu extensión será your_plugin_id.conf
(con «your_plugin_id» reemplazado con el ID especificado de tu extension).
Truco
Ve Clase de Plug-in Principal para mas información en la configuración de tu ID de extensión.
Si estableces sharedRoot
a false
, el nombre de ruta retornado se referirá a un archivo llamado ``{pluginname}.conf` en un directorio especifico a tu extensión.
Si no estas seguro de a que establecer el valor de sharedRoot
, considera lo siguiente:
Si planeas tener múltiples archivos de configuración (extensiones complejas) en el futuro, establece el valor a
false
.Si planeas tener un solo archivo de configuración (extensiones menos complejas), configura el valor a
true
.
También puedes obtener una instancia de Path``apuntando al directorio config en lugar de a un archivo determinado. Sólo lo tienen inyectado mediante la anotación 'ConfigDir' :javadoc:, ya sea con ``sharedRoot
establecido a false
para un directorio específico o true
para obtener el directorio de configuración compartida.
Nota
Mientras que es posible obtener un File
en vez de un Path
, Configurate (y Sponge) recomiendan utilizar Path
.
Ejemplo - Campo usando @DefaultConfig
import java.nio.file.Path;
import com.google.inject.Inject;
import org.spongepowered.api.config.ConfigDir;
import org.spongepowered.api.config.DefaultConfig;
import ninja.leaping.configurate.commented.CommentedConfigurationNode;
import ninja.leaping.configurate.loader.ConfigurationLoader;
@Inject
@DefaultConfig(sharedRoot = true)
private Path defaultConfig;
@Inject
@DefaultConfig(sharedRoot = true)
private ConfigurationLoader<CommentedConfigurationNode> configManager;
@Inject
@ConfigDir(sharedRoot = false)
private Path privateConfigDir;
Advertencia
Cuando la extensión está funcionando por primera vez, las rutas de acceso devueltas para la configuración de archivos y directorios puede que no existan todavía. Si delegas toda la lectura / escritura de archivos a Configurate, no necesitas preocuparte por caminos inexistentes ya que la biblioteca los maneja apropiadamente.
Nota
También se admite el uso del formato YAML (http://yaml.org/spec/1.1/), pero el formato recomendado para las extensiones Sponge es HOCON. lA Conversión de YAML a HOCON puede automatizarse utilizando un :javadoc: “YAMLConfigurationLoader” para cargar la configuración vieja y luego guardarlos usando un :javadoc: “HoconConfigurationLoader”.