Correct sound and material names must be used. Refer to the Spigot docs for more information:
Sounds: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html
Materials: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
The main configuration file can be found at plugins/Queste/config.yml
.
settings.server.use_roman_numerals: whether to use roman numerals where appropriate
settings.server.advancements.generate: whether to use advancements for quests
settings.dev.debug: whether to show debug messages
settings.storage.mode: type of storage to use, either file or sql (default: file)
settings.sql.host: IP of the sql server (default: localhost)
settings.sql.port: Port of the sql server (default: 3306)
settings.sql.db: database name to use (default: Queste)
settings.sql.user: username to connect with (default: user)
settings.sql.password: password to connect with (default: pass)
settings.server.gui.*: individual gui pane settings
It is recommended to setup a database for Queste to use, as this will be much faster and take less storage space than the default file configuration. It is important you do this if you have more than 10 concurrent players.
To connect to an external MySQL database you must have a host IP, port, database name, username, and password. Enter these values into the configuration sections as required. If your database has the same IP as your server, enter 127.0.0.1
or localhost
.
If you do not wish to use an external database, you can instead use SQLite by setting
settings.storage.mode
toSQLITE
.
Restart your server and check that the database connection was successful and Queste enabled.
Queste takes advantage of InventoryFramework, an advanced GUI framework. Most of Queste's GUIs are configurable via config.yml
.
See the Inventory Framework Wiki for more information.
Panes are areas in the inventory that contain items.
Some panes can contain masks. Masks are where the pane items will be placed. An example is the outline pane:
- '111111111'
- '100000001'
- '100000001'
- '100000001'
- '100000001'
- '111111111'
This will place items all around the inventory border. 0 is empty and 1 is filled. It is important the length and height match that of the maximum inventory size.
The bossbar config has two options:
settings.server.tasks.bossbar.async: whether to run the task async
settings.server.tasks.bossbar.interval: how often the bossbar is updated
The interval by default is 1, which means it will be ran 20 times per second. This improves the UI update speed but can cause lag. You should first consider increasing the interval to something like 5
if you are experiencing lag. If you choose, you can set the async setting to true
which means it will run off a seperate thread and will not impact the main thread of the server. However, this is only recommended in extreme circumstances.
Causes of lag can be:
/queste debug
).next_page: "&aNext Page"
next_page_lore:
- "&7Go to the next page."
previous_page: "&cPrevious Page"
previous_page_lore:
- "&7Go to the previous page."
exit: "&cExit"
exit_lore:
- "&7Exit the GUI."
objective_complete:
- " "
- " &e&lObjective Complete! &8(%0/%1)"
- " "
- " &bTask %2/%3: &7%4"
- " "
quest_completed:
- " "
- " &e&lQuest Completed! "
- " "
- " Well done! You've completed"
- " the &b%0 &fquest!"
- " "
quest_started: "&aQuest Started"
quest_completed_title: "&aQuest Completed"
quest_failed_title: "&cQuest Failed"
objective_progress: "&6%0 &7(%1/%2)"
See api for making your own objectives.
These are objectives served by external plugins.
See api for making your own rewards.
These are rewards served by external plugins.
See api for making your own requirements.
These are requirements served by external plugins.
These are starters served by external plugins.
Quest configs are defined in a json file. These can be found under plugins/Queste/quests/
. An example quest file is shown below;
{
"name": "TestItemQuest",
"displayName": "TestItemQuest",
"canRestart": true,
"objectives": [
{
"type": "com.convallyria.queste.quest.objective.BreakBlockQuestObjective",
"properties": {
"blockType": null,
"questName": "TestItemQuest",
"completionAmount": 10,
"progress": {
"4b319cd4-e827-4dcf-a303-9a3fce310755": 10
},
"storyModeKey": 1,
"displayName": "Break Block"
}
},
{
"type": "com.convallyria.queste.quest.objective.ReachLocationObjective",
"properties": {
"location": {
"\u003d\u003d": "org.bukkit.Location",
"world": "world",
"x": 132.17615289046563,
"y": 74.0,
"z": 202.4436829584109,
"pitch": 53.320873,
"yaw": 1.9266663
},
"questName": "TestItemQuest",
"completionAmount": 1,
"progress": {
"4b319cd4-e827-4dcf-a303-9a3fce310755": 1
},
"storyModeKey": 0,
"displayName": "Reach Location"
}
}
],
"rewards": [
{
"type": "com.convallyria.queste.quest.reward.ItemReward",
"properties": {
"item": {
"type": "FISHING_ROD",
"\u003d\u003d": "org.bukkit.inventory.ItemStack",
"v": 2584
}
}
}
],
"requirements": [
{
"type": "com.convallyria.queste.quest.requirement.ItemRequirement",
"properties": {
"item": {
"type": "IRON_AXE",
"\u003d\u003d": "org.bukkit.inventory.ItemStack",
"v": 2584
}
}
}
],
"storyMode": true,
"completeSound": "UI_TOAST_CHALLENGE_COMPLETE",
"time": 60,
"icon": "BARRIER",
"description": "A quest of great honour!"
}
So what does this quest do? It has a time limit of 60s, a start requirement of having an Iron Axe in your inventory, a reward of a fishing rod, and the player must reach a location once and then break any block 10 times.
To automatically add quests and modify their config, there are some commands available.