Interface Extension<T extends Extension.Data>
- All Known Implementing Classes:
GuiceExtension
Implementations of this interface, that are registered by Javas service provider interface, will be called
in JDACBuilder to configure the framework.
This interface provides ways to extend the framework with own functionality:
-
providedImplementations(): By implementing this method and returning a collection ofImplementations, you can for example provide an own implementation ofInteractionControllerInstantiatororDescriptor. These implementations will override the default ones. -
If the
Extensionneeds additional configuration data, implementations have to provide an own implementation ofExtension.Datathat the user has to register in the builder by callingJDACBuilder.extensionData(Data...).
Example
This example extension provides an own implementation of InteractionControllerInstantiator.
public class DIExtension implements Extension {
private Injector injector;
@Override
public void init(@Nullable Data data) {
this.injector = data != null
? ((DIExtensionData) data).providedInjector()
: DI.createInjector();
}
@Override
public Collection<Implementation<?>> providedImplementations() {
return List.of(new Implementation<>(
InteractionClassProvider.class,
_ -> new CustomInteractionClassProvider(this))
);
}
@Override
public Class<GuiceExtensionData> dataType() {
return DIExtensionData.class;
}
}
public record DIExtensionData(Injector providedInjector) implements Extension.Data {}
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interfaceImplementations of this interface are providing additional configuration to implementations ofExtension. -
Method Summary
Modifier and TypeMethodDescriptiondataType()voidInitialises theExtensionwith the providedExtension.Data.default Collection<Implementation<?>> Gets a collection ofImplementations thisExtensionprovides.
-
Method Details
-
init
Initialises theExtensionwith the providedExtension.Data. Will be called right after jda-commands loaded the Extension.- Parameters:
data- The custom implementation ofExtension.Dataif given by the User. This can be safely cast to the type returned bydataType().
-
providedImplementations
Gets a collection ofImplementations thisExtensionprovides.- Returns:
- a collection of
Implementations - Implementation Note:
- Please note that this method is called multiple times during framework creation. If the identity of the implementations is important, you should always return the same instance.
-
dataType
- Returns:
- the
Classof the customExtension.Dataimplementation or null if the extension doesn't support additional configuration
-