> For the complete documentation index, see [llms.txt](https://plugins-1.gitbook.io/plugins/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://plugins-1.gitbook.io/plugins/plugin/tools/developer-api.md).

# Developers

## ToolJoinEvent

This event is fired when the player joins the server, and is given the levelling tool if one isn't present in their inventory.

```java
@EventHandler
public void onToolJoin(ToolJoinEvent event) {
 Player player = event.getPlayer();
 ItemStack item = event.getItem();
 int slot = event.getSlot();
 
 // Is the event cancelled? Returns boolean.
 event.isCancelled();
 
 // Should we cancel the event?
 event.setCancelled(boolean)
}
```

## ToolDamageEvent

This event is fired when the player starts breaking the block.

```java
@EventHandler
public void onBlockDamage(ToolDamageEvent event) {
 Player player = event.getPlayer();
 ItemStack item = event.getItem();
 Block block = event.getBlock();
 
 // Is the event cancelled? Returns boolean.
 event.isCancelled();
 
 // Should we cancel the event?
 event.setCancelled(boolean)
}
```

## ToolMineEvent

This event is fired when the player breaks a block.

```java
@EventHandler
public void onBlockBreak(ToolMineEvent event) {
 Player player = event.getPlayer();
 ItemStack item = event.getItem();
 double xpGained = event.getXpGained();
 Booster booster = event.getBooster();
 Block block = event.getBlock();
 Tool tool = event.getTool();
 
 // Set the xp gained from mining the block.
 event.setXpGained(double);
 
 // Set the booster the player should use.
 event.setBooster(Booster);
 
 // Is the event cancelled? Returns boolean.
 event.isCancelled();
 
 // Should we cancel the event?
 event.setCancelled(boolean)
}
```

## ToolLevelUpEvent

This event is fired when the player levels up their tool.

```java
@EventHandler
public void onLevelUp(ToolLevelUpEvent event) {
 Player player = event.getPlayer();
 ItemStack item = event.getItem();
 PlayerData playerData = event.getPlayerData();
 Tool tool = event.getTool();
 
 // Is the event cancelled? Returns boolean.
 event.isCancelled();
 
 // Should we cancel the event?
 event.setCancelled(boolean)
}
```
