> For the complete documentation index, see [llms.txt](https://staffplusplus-minecraft.gitbook.io/tubing/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://staffplusplus-minecraft.gitbook.io/tubing/dependency-injection/annotations.md).

# Annotations

## @IocBukkitCommandHandler

Specify this bean as a command executor. [More info](/tubing/dependency-injection/commands.md)

| property | description                                            |
| -------- | ------------------------------------------------------ |
| value    | The name of the command as specified in the plugin.yml |

```java
@IocBukkitCommandHandler("broadcast")
public class BroadcastCmd implements CommandExecutor {

    private final MessageService messageService;
    private final BroadcastingService broadcastingService;

    public BroadcastCmd(MessageService messageService, BroadcastingService broadcastingService) {
        this.messageService = messageService;
        this.broadcastingService = broadcastingService;
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String alias, String[] args) {
     ...
    }
}
```

## @IocBukkitListener

Specify this bean as a Bukkit event listener.

```java
@IocBukkitListener
public class PlayerJoinListener implements Listener {

    @EventHandler(priority = EventPriority.NORMAL)
    public void onJoin(PlayerJoinEvent event) {
        ...
    }
}
```

## @IocBukkitMessageListener

Specify this bean as a Bungee message listener.

```java
@IocBukkitMessageListener(channel = "BungeeCord")
public class BroadcastedMessageBungeeReceiver implements PluginMessageListener {

    private final BungeeService bungeeService;

    public BroadcastedMessageBungeeReceiver(BungeeService bungeeService) {
        this.bungeeService = bungeeService;
    }

    @Override
    public void onPluginMessageReceived(String channel, Player player, byte[] message) {
        Optional<BungeeBroadcastedMessage> bungeeMessage = bungeeService.handleReceived(channel, BUNGEE_REPORT_MESSAGE_BROADCAST_CHANNEL, message, BungeeBroadcastedMessage.class);
        bungeeMessage.map(BungeeBroadcastedMessage::getBroadcastedMessage).ifPresent(b -> Bukkit.getPluginManager().callEvent(new BroadcastedMessageReceivedBungeeEvent(b)));
    }
}
```

| property | Description                                      |
| -------- | ------------------------------------------------ |
| channel  | The channel on which the listener should listen. |

##
