Quest progress in scoreboard

This guide will show you how to show quest progress in a scoreboard. The plugin https://www.spigotmc.org/resources/animatedscoreboard.20848/ will provide this scoreboard, however this will work for any plugin accepting PlaceholderAPI.

This utilises three features from Quests:

  • tracking quests
  • PlaceholderAPI integration
  • local quest placeholders

The final result will look like this:

Adding local quest placeholders

Local quest placeholders are used here to provide the progress of the quest and to provide a breif description of the quest. We will use a simple blockbreak quest as our base here, where we must break 30 blocks to complete the quest.

/Quests/quests/example1.yml
...

placeholders:
  description: "&7Break &f30 blocks &7of any type."
  progress: " &8- &f{mining:progress}&7/30 broken"

...

These placeholders will be called using PlaceholderAPI using the AnimatedScoreboard plugin. For example, using the placeholder %quests_q:example1_p:description% with PlaceholderAPI will return &7Break &f30 blocks &7of any type.. These are known as local quest placeholders.

Our description placeholder provides a description of the quest. The `progress` placeholder will show the players progression with the quest.

You can create any placeholders here, and decide the names for yourself. These are designed for you to be able to access information about a quest with PlaceholderAPI. Avoid using underscores and spaces, this may cause issues when referencing them using placeholders.

To see the full quest (with comments), click here.

Configuring AnimatedScoreboard

This guide assumes you have a basic understanding of the plugin AnimatedScoreboard.

For our config with AnimatedScoreboard, we will create two seperate scoreboards: one with tracked quest information and one informing the user that they are not tracking a quest.

/AnimatedScoreboard/scoreboards/questtrack.yml
display:
    title:
      text: 
       - "&6&lAmazing Server"
    line-1:
      text:
      - "&7"
      score: 5 
    line-2:
      text:
      - "&e&lTracked Quest:"
      score: 4
    line-3:
      text:
      - "&e%quests_tracked%"
      score: 3
    line-4:
      text:
      - "&7%quests_tracked_p:description%"
      score: 2
    line-5:
      text:
      - "&7%quests_tracked_p:progress%"
      score: 1
    line-6:
      text:
      - "&7"
      score: 0      

The placeholder %quests_tracked<...>% will access the players tracked quest. In order to track a quest you must middle-click in-game on the quest within the GUI. By default, when you start a quest it is automatically tracked.

Simply put, we are accessing the placeholders called description and progress which we made earlier in the player’s tracked quest.

Now, we are going to create a default scoreboard for when there is no tracked quest.

/AnimatedScoreboard/scoreboards/defaultscoreboard.yml
display:
    title:
      text: 
       - "&6&lAmazing Server"
    line-1:
      text:
      - "&7"
      score: 3 
    line-2:
      text:
      - "&e&lTracked Quest:"
      score: 2
    line-3:
      text:
      - "&7You are not tracking a quest."
      score: 1
    line-4:
      text:
      - "&7"
      score: 0      

This is a simple static scoreboard. Finally, we must add a trigger to switch between the two scoreboards.

Triggers must first be enabled within AnimatedScoreboard:

/AnimatedScoreboard/config.yml
...
enable-triggers: true
...

Then, the server must be restarted. There should be a new folder called triggers.

Now, we must create two files ontrack.yml and ontrackend.yml. This will switch between the two scoreboard whenever the player tracks / stops tracking a quest.

/AnimatedScoreboard/triggers/ontrack.yml
event: com.leonardobishop.quests.bukkit.api.event.PlayerStartTrackQuestEvent
target-player: getPlayer
trigger-scoreboard: questtrack

This will switch to the `questtrack` scoreboard when a quest is tracked.

/AnimatedScoreboard/triggers/ontrackend.yml
event: com.leonardobishop.quests.bukkit.api.event.PlayerStopTrackQuestEvent
target-player: getPlayer
trigger-scoreboard: defaultscoreboard

This will switch to the `defaultscoreboard` scoreboard when a quest is no longer tracked.

That’s it! Restart the server and you should be able to see the progress update in the scoreboard. Please note, you will have to include local quest placeholders for every quest.

Further reading


Back to top

This wiki serves as a manual for Quests however there is no guarantee that the information is up-to-date or complete. As per the license, this software provides absolutely no warranty, nor are the maintainers liable for any damages. Please see the license text for more information.