Interface Config

All Known Subinterfaces:
StormConfig

public interface Config
Marker interface for plugin configuration interfaces.

Plugin configurations are defined as interfaces that extend Config. The configuration system uses dynamic proxies to provide implementations that automatically read and write values to persistent storage.

Configuration interfaces should be annotated with ConfigGroup and contain methods annotated with ConfigItem:


 @ConfigGroup("myplugin")
 public interface MyPluginConfig extends Config {
     @ConfigItem(
         keyName = "enableFeature",
         name = "Enable Feature",
         description = "Enables the main feature"
     )
     default boolean enableFeature() {
         return true;
     }

     @ConfigItem(
         keyName = "maxCount",
         name = "Max Count",
         description = "Maximum number of items"
     )
     @Range(min = 1, max = 100)
     default int maxCount() {
         return 10;
     }
 }
 

To use a configuration in your plugin, inject it using Guice or retrieve it through the ConfigManager:


 @Inject
 private MyPluginConfig config;

 public void someMethod() {
     if (config.enableFeature()) {
         // Feature is enabled
     }
 }
 

See Also: