# Event API

* PlayerSkillUseEvent **(Cancellable)**
* GameStartEvent
* GameEndEvent
* PlayerAchievementEvent
* PlayerHitEvent **(Cancellable)**
* DamageBlockEvent&#x20;
* PlayerFlagCaptureEvent **(Cancellable)**
* PlayerManaRegenerationEvent **(Cancellable)**

Event usage example

```java
    @EventHandler
    public void onManaRegeneration(PlayerManaRegenerationEvent event) {
        GamePlayer gp = event.getPlayer();
        if(gp.hasFlag()) {
            event.setCancelled(true);
            return;
        }
        if (event.getAmount() % 10 == 0)
            gp.getP().sendMessage("+10");

        if(gp.getP().isSneaking())
            event.setAmount(event.getAmount() + 5);
    }
    
    @EventHandler
    public void onFlagCapture(PlayerFlagCaptureEvent event) {
        if(event.getPlayer().getMana() <= 50) {
            event.setCancelled(true);
            event.getPlayer().getP().sendMessage(ChatColor.RED + "You need at least 50 mana to capture the flag!");
        }
    }
    
    @EventHandler
    public void onSkillUse(PlayerSkillUseEvent event) {
        GamePlayer player = event.getPlayer();
        if(player.getP().isSneaking())
            player.setMana(player.getMana()+5);
    }
 
    @EventHandler
    public void onGameStart(GameStartEvent event) {
        event.getGame().sendTitle("The", "start");
    }
 
    @EventHandler
    public void onGameEnd(GameEndEvent event) {
        event.getWinner().getPlayers().forEach(player -> player.sendMessage("You won!"));
    }

    @EventHandler
    public void onAchievement(PlayerAchievementEvent event) {
        if(event.getType() == AchievementType.WINS) {
            event.getPlayer().sendMessage("Wins!");
        }
    }
 
    @EventHandler
    public void onPlayerDamage(PlayerHitEvent event) {
        GamePlayer damager = event.getDamager();
        GamePlayer target = event.getPlayer();
        if(target.getName().equalsIgnoreCase("Floodeer")) {
            event.setCancelled(true);
        }else{
            if(!target.getP().isSneaking())
                event.setDamage(event.getDamage() + 2);
 
            damager.getP().sendMessage("Hit " + target.getName() + " with " + event.getDamage() + " of damage.");
        }
    }
 
    @EventHandler
    public void onDamageBlock(DamageBlockEvent event) {
        GamePlayer damager = event.getDamager();
        GamePlayer blocker = event.getPlayer();
        if(blocker.getP().isSneaking()) {
            event.setDamage(event.getDamage()/2);
        }
        blocker.getP().sendMessage("Blocked " + event.getDamage() + " from " + damager.getName());
    }
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://floodeer.gitbook.io/wizards-1/for-developers/event-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
