Repository navigation
Sample
Alexis Chân Gridel edited this page Jul 31, 2022
·
1 revision
public final class HelloWorldPlugin extends JavaPlugin {
@Override
public void onEnable() {
final Injector injector = Guice.createInjector(new IocContainerModule(this));
PluginDependencies.fromInjector(injector).registerAll(this);
getLogger().info(getName() + " is loaded !");
}
@Override
public void onDisable() {
getLogger().info(getName() + " is unloaded !");
}
}public class HelloWorldService {
public void salute(final CommandSender recipient) {
recipient.sendMessage("Hello, world!");
}
}public class HelloWorldCommand extends SelfConfiguredCommandExecutor {
private final HelloWorldService service;
@Inject
public HelloWorldCommand(HelloWorldService service) {
this.service = service;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
service.salute(sender);
return true;
}
}public class IocContainerModule extends PluginModule {
public IocContainerModule(Plugin plugin) {
super(plugin);
}
@Override
protected void configureBindings() {
bind(Plugin.class).toInstance(plugin);
bind(Plugin.class).toInstance(new HelloWorldService(plugin));
}
@Override
protected void configureListeners(Multibinder<Listener> binder) {
}
@Override
protected void configureCommands(Multibinder<CommandConfigurator> binder) {
binder.addBinding().to(HelloWorldCommand.class);
}