Annotation Interface Inject


Marks a field or constructor parameter for dependency injection.

The plugin loader will automatically inject available services into fields or constructor parameters annotated with @Inject.

Available Injectables

Field Injection

@Plugin(id = "my-plugin", name = "My Plugin", version = "1.0.0")
public class MyPlugin {

    @Inject
    private ProxyServer server;

    @Inject
    private MessagingService messaging;

    @Inject
    private Logger logger;

    @Subscribe
    public void onInit(ProxyInitializeEvent event) {
        logger.info("Plugin loaded with {} players", server.getPlayerCount());
    }
}

Constructor Injection

@Plugin(id = "my-plugin", name = "My Plugin", version = "1.0.0")
public class MyPlugin {

    private final ProxyServer server;
    private final Logger logger;

    @Inject
    public MyPlugin(ProxyServer server, Logger logger) {
        this.server = server;
        this.logger = logger;
    }
}
See Also: