# Task/Objective types

{% hint style="warning" %}
Everywhere you see the `your_task_id` text, you need to replace that with some unique text. Do not use the same IDs in the same quest file! Task placeholders are also generated based on this ID.
{% endhint %}

{% hint style="info" %}
If you want to match any type, use `types: []` or don't even write `types` in the `args` section. If you want `types` to be a blacklist, add `mode: blacklist` to your args.
{% endhint %}

### FISH

For this task, players need to catch fish.

```yaml
  your_task_id:
    task: FISH
    display: "{status} &fCatch {required} carp fish &b{current}&f/&b{required}"
    args:
      # How many should the player catch in total?
      amount: 10
      # These tree fish will progress the task, when the player catches them.
      types:
        # Vanilla
        - "minecraft:cod"
        # CustomFishing plugin fish
        - "customfishing:carp_fish_silver_star"
        - "customfishing:carp_fish_gold_star"
        - "customfishing:carp_fish"
        # For other plugins that using custom model data on fish
        # Provide the vanilla type and a number that is the custom model data
        # the item has.
        - "minecraft:cod:53"
```

### BLOCK\_SHEAR

For this task, players need to shear blocks. (useful for honey stuff)

```yaml
  your_task_id:
    task: BLOCK_SHEAR
    display: "{status} &fShear {required} bee hive &b{current}&f/&b{required}"
    args:
      # How many times should the player shear the block?
      amount: 10
      types:
        - "minecraft:beehive"
```

### BLOCK\_SHEAR\_LOOT

For this task, players need to shear blocks. (useful for honey stuff)

```yaml
  your_task_id:
    task: BLOCK_SHEAR_LOOT
    display: "{status} &fGet {required} honeycomb &b{current}&f/&b{required}"
    args:
      # How many items should the player gather by shearing blocks?
      amount: 10
      types:
        - "minecraft:honeycomb"
```

### BREED

For this task, players need to breed animals/entities.

```yaml
  your_task_id:
    task: BREED
    display: "{status} &fBreed {required} cows or pigs &b{current}&f/&b{required}"
    args:
      # How many times should a player breed the animals?
      amount: 10
      # Only supports vanilla entities
      types:
        - "minecraft:cow"
        - "minecraft:pig"
```

### BREW

For this task, players need to brew potions. Types can be any valid Spigot PotionType. [Click here to see them](https://hub.spigotmc.org/javadocs/spigot/org/bukkit/potion/PotionType.html).

```yaml
  your_task_id:
    task: BREW
    display: "{status} &fBrew an extended strength potion"
    args:
      amount: 1
      types: 
        - 'long_strength'
```

### RUN\_COMMAND

For this task, players need to run a specific command. Useful for tutorial quests.

```yaml
  your_task_id:
    task: RUN_COMMAND
    display: "{status} &fRun the &7/menu &fcommand."
    args:
      types: 
        - 'menu'
```

### CONSUME

For this task, players need to consume/eat/drink stuff. Other plugin items are also supported here, see: [Item config](https://app.gitbook.com/s/1mRm2d218gpt3uXzQ0ZN/item-config "mention")

```yaml
  your_task_id:
    task: CONSUME
    display: "{status} &fEat {required} chicken &b{current}&f/&b{required}"
    args:
      # How many items should the player consume?
      amount: 10
      types:
        - "minecraft:chicken"
```

### CRAFT

For this task, players need to craft items. Other plugin items are also supported here, see: [Item config](https://app.gitbook.com/s/1mRm2d218gpt3uXzQ0ZN/item-config "mention")

```yaml
  your_task_id:
    task: CRAFT
    display: "{status} &fCraft {required} pumpkin pies &b{current}&f/&b{required}"
    args:
      # How many items should the player craft?
      amount: 10
      types:
        # Vanilla items
        - "minecraft:pumpkin_pie"
        # Example other plugin items
        - "eco:ecoitems:grappling_hook"
        - "mmoitems:item_type:item_id"
        - "mythicmobs:item_id"
```

### EARN\_EXP

For this task, players need to earn vanilla Minecraft xp.

```yaml
  your_task_id:
    task: EARN_EXP
    display: "{status} &fEarn {required} minecraft XP &b{current}&f/&b{required}"
    args:
      # How many xp should the player earn?
      amount: 100
```

### FARM

This is a special type of BLOCK\_BREAK, specifically for farming. If you want to detect crop farming, right-click harvestable or ageable plants (wheat, carrot, sugar cane, and basically everything), then use this task type.

```yaml
  your_task_id:
    task: FARM
    display: "{status} &fFarm {required} wheat or sugar cane &b{current}&f/&b{required}"
    args:
      # How many items should the player farm?
      amount: 10
      types:
        - "minecraft:wheat"
        - "minecraft:sugar_cane"
```

### MILK

Players need to milk cows/goats with a bucket.

```yaml
  your_task_id:
    task: MILK
    display: "{status} &fMilk {required} goats or cows &b{current}&f/&b{required}"
    args:
      # How many items should the player milk the animals?
      amount: 10
      types:
        - "minecraft:cow"
        - "minecraft:goat"
```

### BLOCK\_BREAK

Simplest task type. Just make players break blocks. Nexo is supported for custom block breaks. Use `nexo:block_id`

```yaml
  your_task_id:
    task: BLOCK_BREAK
    display: "{status} &fBreak {required} stone blocks &b{current}&f/&b{required}"
    args:
      # How many blocks should the player break?
      amount: 10
      types:
        - "minecraft:stone"
```

### BLOCK\_LOOT

Like BLOCK\_BREAK, this counts the items the block drops when broken. If other plugins set drops properly, you can match custom items here. See [Item config](https://app.gitbook.com/s/1mRm2d218gpt3uXzQ0ZN/item-config "mention")\
Nexo custom block loot will also be recorded here.

```yaml
  your_task_id:
    task: BLOCK_LOOT
    display: "{status} &fGet {required} xyz items &b{current}&f/&b{required}"
    args:
      # How many blocks should the player break?
      amount: 10
      types:
        # Minecraft material types. 
        - "minecraft:cobblestone"
        # Example other plugin items
        - "eco:ecoitems:grappling_hook"
        - "mmoitems:item_type:item_id"
        - "mythicmobs:item_id"
```

### BLOCK\_PLACE

Players need to place blocks. Nexo is supported for custom block places. Use `nexo:block_id`

```yaml
  your_task_id:
    task: BLOCK_PLACE
    display: "{status} &fPlace {required} stone blocks &b{current}&f/&b{required}"
    args:
      # How many blocks should the player place?
      amount: 10
      types:
        - "minecraft:stone"
```

### BUILD

Players need to place blocks.  If they break a player placed block that matches the types filter, their progression will go down. Nexo is supported for custom blocks. Use `nexo:block_id`

```yaml
  your_task_id:
    task: BUILD
    display: "{status} &fBuild {required} stone blocks &b{current}&f/&b{required}"
    args:
      # How many blocks should the player place (without breaking them)?
      amount: 10
      types:
        - "minecraft:stone"
```

### ENCHANT

Players need to enchant items with a specific enchantment. You also need to specify all the valid enchant levels.&#x20;

```yaml
  your_task_id:
    task: ENCHANT
    display: "{status} &fEnchant sharpness on something"
    args:
      # How many times should a player enchant?
      # Can be omitted if 1.
      amount: 1
      # Minimum required level of the enchantment (optional)
      min-level: 3
      # Maximum level of the enchantment
      max-level: 5
      # Exact level of the enchantment. Overrides the previous 2 options
      level: 4
      types:
        # Minecraft enchants types (use the namespaced key of the enchants). 
        # Custom enchantments should be supported if they are 
        # registered in the vanilla way with the minecraft namespace
        - "minecraft:sharpness"
      
```

### KILL\_MOB

Players need to kill mobs. Supports MythicMobs (`mythicmobs:mob_name`) and EcoMobs (`ecomobs:mob_id`) as well.

```yaml
 your_task_id:
    task: KILL_MOB
    display: "{status} &fKill {required} xyz mobs &b{current}&f/&b{required}"
    args:
      # How many mobs should the player break?
      amount: 10
      types:
        # Minecraft vanilla entity types. 
        - "minecraft:zombie"
        # Example other plugin mobs
        - "ecomobs:mob_id"
        - "mythicmobs:SkeletalKnight"
```

### KILL\_LEVELLED\_MOB

Players need to kill levelled mobs. Only supports MythicMobs (`mythicmobs:mob_name`) at the moment.

```yaml
  your_task_id:
    task: KILL_LEVELLED_MOB
    display: "{status} &fKill {required} at least lvl 15 xyz mobs &b{current}&f/&b{required}"
    args:
      # How many times should the player kill the mob?
      amount: 5
      # Minimum required level of the mob (optional)
      min-level: 15
      # Maximum level of the mob
      max-level: 20
      # Exact level of the mob. Overrides the previous 2 options (optional)
      level: 15
      types:
        - "mythicmobs:SkeletalKnight"
```

### KILL\_PLAYER

Players need to kill other players.

```yaml
  your_task_id:
    task: KILL_PLAYER
    display: "{status} &fKill {required} players &b{current}&f/&b{required}"
    args:
      # How many players should the player kill?
      amount: 10
      # Optional: specify the player name who needs to be killed
      types:
        - "Notch"
```

### ENTITY\_LOOT

Players need to loot items by killing mobs. If other plugins set drops properly, you can match custom items here. See [Item config](https://app.gitbook.com/s/1mRm2d218gpt3uXzQ0ZN/item-config "mention")

```yaml
  your_task_id:
    task: ENTITY_LOOT
    display: "{status} &fGet {required} xyz items by killing mobs &b{current}&f/&b{required}"
    args:
      # How many items should the player collect?
      amount: 10
      types:
        # Minecraft material types. 
        - "minecraft:cobblestone"
        # Example other plugin items
        - "eco:ecoitems:grappling_hook"
        - "mmoitems:item_type:item_id"
        - "mythicmobs:item_id"
```

### SHEAR

Players need to shear other entities. Like sheep for example.

```yaml
  your_task_id:
    task: SHEAR
    display: "{status} &fShear {required} sheep &b{current}&f/&b{required}"
    args:
      # How many times should the player shear the entites?
      amount: 10
      types:
        - "minecraft:sheep"
```

### SHEAR\_LOOT

Players need to shear other entities. Like sheep for example.

```yaml
  your_task_id:
    task: SHEAR_LOOT
    display: "{status} &fGet {required} wool &b{current}&f/&b{required}"
    args:
      # How many times should the player get by shearing the entities?
      amount: 10
      types:
        - "minecraft:white_wool"
```

### SMELT

Players need to smelt items in furnaces. The result is what counts. Other plugin items are supported, see: [Item config](https://app.gitbook.com/s/1mRm2d218gpt3uXzQ0ZN/item-config "mention")

```yaml
  your_task_id:
    task: SMELT
    display: "{status} &fSmelt {required} xyz items &b{current}&f/&b{required}"
    args:
      # How many items should the player smelt?
      amount: 10
      types:
        # Minecraft material types. 
        - "minecraft:cobblestone"
        # Example other plugin items
        - "eco:ecoitems:grappling_hook"
        - "mmoitems:item_type:item_id"
        - "mythicmobs:item_id"
```

### TAME

Tame vanilla Minecraft animals, like wolves, cats, parrots, etc.

```yaml
  your_task_id:
    task: TAME
    display: "{status} &fTame {required} wolves &b{current}&f/&b{required}"
    args:
      # How many animals should the player tame?
      amount: 2
      types:
        # Specifiy valid minecraft entity types for taming
        - "minecraft:wolf"
```

### GAIN\_AURASKILLS\_XP

Players need to get some AuraSkills XP.

```yaml
  your_task_id:
    task: GAIN_AURASKILLS_XP
    display: "{status} &fGet {required} farming XP &b{current}&f/&b{required}"
    args:
      # How many xp players should get in AuraSkills?
      amount: 15
      types:
        # Specify valid skills using AuraSkills NamespacedId
        - "auraskills/farming"
```

### GAIN\_AURORA\_LEVEL

Players need to gain AuroraLevels.

```yaml
  your_task_id:
    task: GAIN_AURORA_LEVEL
    display: "{status} &fLevel up {required} times &b{current}&f/&b{required}"
    args:
      # How many times should the player level up?
      amount: 1
```

### GAIN\_AURORA\_XP

Players need to gain AuroraLevels XP.

```yaml
  your_task_id:
    task: GAIN_AURORA_XP
    display: "{status} &fGet {required} Aurora XP &b{current}&f/&b{required}"
    args:
      # How much Aurora XP should the player get?
      amount: 100
```

### INTERACT\_NPC

Players need to right-click on an NPC. You can get the NPC ID by looking at the NPC and executing the `/npc select` command if you are using Citizens (`citizens:id`). FancyNPCs (`fancynpcs:name`), Adyeshach (a`dyeshach:id`), ZNPCs (`znpcs:name`) and ZNPCsPlus (`znpcsplus:name`) are also supported NPC plugins.&#x20;

```yaml
  your_task_id:
    task: INTERACT_NPC
    display: "{status} &fTalk to the &cTutorial &fNPC"
    args:
      # How many times should a player right click on the npc?
      # If it is just 1, you can omit this argument
      amount: 1
      # The namespaced ID of the Citizens NPC. Can be multiple. Only one need to 
      # match to progress the task.
      types:
        - "citizens:21"
```

### SELL\_WORTH

Players need to sell items using EconomyShopGUI/ShopGUI+/ExcellentShop for a specific amount.

```yaml
  your_task_id:
    task: SELL_WORTH
    display: "{status} &fSell items for a total of {required} dollars &b{current}&f/&b{required}"
    args:
      # How much money should the player earn by selling?
      amount: 5000
```

### SELL

Players need to sell a specific amount of items to the shop using EconomyShopGUI/ShopGUI+. Other plugin items are also supported here, see: [Item config](https://app.gitbook.com/s/1mRm2d218gpt3uXzQ0ZN/item-config "mention")

```yaml
  your_task_id:
    task: SELL
    display: "{status} &fSell {required} xyz items &b{current}&f/&b{required}"
    args:
      # How many items should the player sell?
      amount: 10
      types:
        # Minecraft material types. 
        - "minecraft:cobblestone"
        # Example other plugin items
        - "eco:ecoitems:grappling_hook"
        - "mmoitems:item_type:item_id"
        - "mythicmobs:item_id"
```

### BUY

Players need to sell a specific amount of items to the shop using EconomyShopGUI/ShopGUI+. Other plugin items are also supported here, see: [Item config](https://app.gitbook.com/s/1mRm2d218gpt3uXzQ0ZN/item-config "mention")

```yaml
  your_task_id:
    task: BUY
    display: "{status} &fBUY {required} xyz items &b{current}&f/&b{required}"
    args:
      # How many items should the player buy?
      amount: 10
      types:
        # Minecraft material types. 
        - "minecraft:cobblestone"
        # Example other plugin items
        - "eco:ecoitems:grappling_hook"
        - "mmoitems:item_type:item_id"
        - "mythicmobs:item_id"
```

### BUY\_WORTH

Players need to buy items using EconomyShopGUI/ShopGUI+/ExcellentShop for a specific amount.

```yaml
  your_task_id:
    task: BUY_WORTH
    display: "{status} &fBuy items for a total of {required} dollars &b{current}&f/&b{required}"
    args:
      # How much money should the player spend by buying stuff?
      amount: 5000
```

### INTERACT\_SHOPKEEPER

Players need to right click on a Shopkeeper. You can view the number IDs of your shopkeepers by running the `/shopkeeper list all` command.

```yaml
  your_task_id:
    task: INTERACT_SHOPKEEPER
    display: "{status} &fTalk to the &cRed &fisland merchant"
    args:
      # How many times should a player right-click on the shopkeeper?
      # If it is just 1, you can omit this argument
      amount: 1
      # The ID of the Shopkeeper. Can be multiple. Only one needs to match
      # to progress the task.
      types: [ 12 ]
```

### TRADE\_SHOPKEEPER

Players need to trade for a specific item with Shopkeepers.

```yaml
  your_task_id:
    task: TRADE_SHOPKEEPER
    display: "{status} &fBuy a fishing rod"
    args:
      # How many of the items player should buy?
      amount: 1
      # Items that the player should buy. Can be a vanilla item using minecraft:
      # Or any other custom item AuroraLib supports. Can be multiple. It will 
      # progress if the player buys any of the items listed here.
      types:
        # Other plugin items
        - "customfishing:beginner_rod"
        # Vanilla items
        - "minecraft:diamond"
```

### ENTER\_REGION

Players need to enter a WorldGuard region once. To view the region names where you standing, use the `/rg info` command. Currently, only WorldGuard is supported as a region management plugin.

```yaml
  your_task_id:
    task: ENTER_REGION
    display: "{status} &fGo inside the cave on the candy island"
    args:
      # How many times should the player enter the region? If it is just 1
      # you can omit this parameter
      amount: 1
      # List all valid WorldGuard region names here that will progress the quest.
      types:
        - 'wg:candy_island_cave'
```

### COMPLETE\_DUNGEON

Players need to complete a dungeon. Currently only works with MythicDungeons 2.0.0

```yaml
  your_task_id:
    task: COMPLETE_DUNGEON
    display: "{status} &fComplete {required} dungeons &b{current}&f/&b{required}"
    args:
      # How many times should the player complete the dungeons?
      amount: 3
      # You can specify the dungeon difficulty as well (optional)
      difficulty: EASY
      types:
        - "mythicdungeons:dungeon_id"
```

### TAKE\_ITEM

Players need to have and give items upon clicking on the quest in the menu. Other plugin items are also supported here, see: [Item config](https://app.gitbook.com/s/1mRm2d218gpt3uXzQ0ZN/item-config "mention")

```yaml
  your_task_id:
    task: TAKE_ITEM
    display: "{status} &fGive {required} dirt &b{current}&f/&b{required}"
    args:
      # How many items should be taken from the player?
      amount: 10
      # What item should be taken from the player?
      item: 'minecraft:dirt'
```

### ENTER\_WORLD

Players need to enter a world to progress the quest.

```yaml
  your_task_id:
    task: ENTER_WORLD
    display: "{status} &fEnther the nether {required} times &b{current}&f/&b{required}"
    args:
      # How many times should the player enter the world?
      amount: 10
      # List all valid world names here that will progress the quest
      types: 
        - 'world_nether'      
```

### DEAL\_DAMAGE

Players need to damage entities. You can filter the entities.

```yaml
  your_task_id:
    task: DEAL_DAMAGE
    display: "{status} &fDeal {required} damage &b{current}&f/&b{required}"
    args:
      # How much damage should the player deal?
      amount: 1000
      # List all valid mobs that will count damage 
      # Optional, empty list means everything
      types: 
        - 'minecraft:zombie'
        - "mythicmobs:SkeletalKnight"
        - "ecomobs:mob_id"   
```

### BREAK\_ITEM

Players need to break their items. Other plugin items are also supported here, see: [Item config](https://app.gitbook.com/s/1mRm2d218gpt3uXzQ0ZN/item-config "mention")

```yaml
  your_task_id:
    task: BREAK_ITEM
    display: "{status} &fBreak {required} xyz items &b{current}&f/&b{required}"
    args:
      # How many items should the player break?
      amount: 10
      types:
        # Minecraft material types. 
        - "minecraft:diamond_axe"
        # Example other plugin items
        - "eco:ecoitems:grappling_hook"
        - "mmoitems:item_type:item_id"
        - "mythicmobs:item_id"
```

### TRAVEL

Players need to... well... move. This task type is using the statistics built into the game.

```yaml
  your_task_id:
    task: TRAVEL
    display: "{status} &fTravel {required} blocks &b{current}&f/&b{required}"
    args:
      # How many blocks should the player walk?
      amount: 10
      # Stat types to track
      walk: true
      sprint: true
      swim: true
      boat: true
      horse: true
      pig: true
      strider: true
      walk-on-water: true
      walk-under-water: true
      # Or instead of these above, you can just say: all
      all: true
```

### PLACEHOLDER

Players need to match a placeholder with the given value. `==` is for text equality check. `===` for number equality check. The other ones are also for numbers. Only use async if the plugin that provides the placeholder can handle concurrency properly.

```yaml
  your_task_id:
    task: PLACEHOLDER
    display: "{status} &fMatch placeholder"
    args:
      placeholder: "%aurora_meta_test_int%"
      # Defaults to == if not present
      # Can be ==, ===, >, <, >=, <=
      comparison: ">"
      value: 10
      # These are optional
      check-interval: 200 # In ticks
      async: false # Be careful setting this to true. Not every plugin placeholder is thread safe
```

## Experimental task types

{% hint style="danger" %}
The following task types are either untested or experimental. Testing is needed. Use at your own risk.
{% endhint %}

### JOIN\_ISLAND

Requires SuperiorSkyblock2. Players either need to create an island or join one.

```yaml
  your_task_id:
    task: JOIN_ISLAND
    display: "{status} &fCreate or join an island"
    args: {}
```

### REACH\_ISLAND\_LEVEL

Requires SuperiorSkyblock2. Players need to reach the specified island level. **This quest is team based** meaning every island member will have the progression.

```yaml
  your_task_id:
    task: REACH_ISLAND_LEVEL
    display: "{status} &fReach {required} island levels &b{current}&f/&b{required}"
    args:
      # What island level should the players reach?
      amount: 1000
```

### REACH\_ISLAND\_WORTH

Requires SuperiorSkyblock2. Players need to reach the specified island worth. **This quest is team based** meaning every island member will have the progression.

```yaml
  your_task_id:
    task: REACH_ISLAND_WORTH
    display: "{status} &fReach {required} island worth &b{current}&f/&b{required}"
    args:
      # What island worth should the players reach?
      amount: 1000
```

### UPGRADE\_ISLAND

Requires SuperiorSkyblock2. Players need to upgrade their island. **This quest is team based** meaning every island member will have the progression.

```yaml
  your_task_id:
    task: UPGRADE_ISLAND
    display: "{status} &fUpgrade your generator &b{current}&f/&b{required}"
    args:
      # The upgrade level that needs to be reached
      amount: 5
      types:
        # Required upgrade name
        - "upgrade_name_here"
```
