Quests [1.8-1.21] | Set up goals for players icon

Quests [1.8-1.21] | Set up goals for players -----

Allow your players to do quests in return for rewards




This update fixes a bug where the plugin chat would fail to initialize on Paper 1.16.5 - 1.18.1.

Commit log since v3.15.1

5eb0ffd - Fix Chat class initialization on Paper 1.16.5 - 1.18.1 Check for class actually needed by MiniMessageParser <Krakenied>
5a09ba5 - Add missing options to farming docs <Krakenied>
b216e2b - Prepare for release 3.15.2 Bump version number <Krakenied>

More information

----------, Aug 28, 2024

Hi everyone,

This update is mainly technical. It enhances general plugin performance and version compatibility (from 1.8 to 1.21.1). As always, it also includes several quality of life improvements and many new features, such as: new task types, enhancements to existing ones, new dedicated plugin item types, a visible progress boss bars limit, direct Vault rewards support, and more! Additionally, it addresses several bugs.

New number formatting options utilizing Java's DecimalFormat and DecimalFormatSymbols have been added. These allow you to configure the desired number format displayed in Quests GUIs, placeholders, and beyond. This feature enhances consistency and readability of number displays across your server.

We’ve also introduced 10 new task types: bucketentity, composting, curing, hatching, itembreaking, itemdamaging, itemmending, resurrecting, trading and customfishing_fishing. The configuration details for these tasks can be found in the wiki.

In addition to these new tasks, there are several fixes and improvements to existing ones, including:

  • blockbreak:
    • Added the item option (along with data and exact-match).
    • CoreProtect and PlayerBlockTracker hooks will now prevent task progress from increasing if the check (in the task) is enabled and the required plugin fails to start, preventing potential exploitation.
    • Added the coreprotect-block-lookup-delay option to config.yml to delay CoreProtect hook lookups, which can be used to mitigate the fast break and place bug caused by CoreProtect's asynchronicity delays.
  • blockplace:
    • Added the allow-negative-progress option, similar to the one in blockbreak.
  • bucketempty, bucketfill:
    • These task types now use an improved item matching system, allowing item, data, and exact-match options usage.
  • command:
    • Added the command-match-mode option to specify how commands should be matched. Possible values: EQUALS, STARTS_WITH, ENDS_WITH.
  • consume, crafting:
    • The item option is now optional.
  • farming:
    • CoreProtect and PlayerBlockTracker options have been added (similar to blockbreak).
    • CoreProtect and PlayerBlockTracker hooks will now prevent task progress from increasing if the check (in the task) is enabled and the required plugin fails to start, preventing potential exploitation.
    • Added the coreprotect-block-lookup-delay option to config.yml to delay CoreProtect hook lookups, which can be used to mitigate the fast break and place bug caused by CoreProtect's asynchronicity delays.
  • interact:
    • Added action option (supports lists). Supported values can be found in Spigot API docs.
    • Added hand option (supports lists). Supported values can be found in Spigot API docs.
    • Added use-interacted-block-result option (supports lists). Supported values can be found in Spigot API docs. The option ought to be used only in very specific setups.
    • Added use-item-in-hand-result option (supports lists). Supported values can be found in Spigot API docs. The option ought to be used only in very specific setups.
  • inventory:
    • Progress boss bars and action bars will only be displayed when progress changes
  • milking:
    • Added the mob option (supports lists), typically used for specifying mobs such as COW or GOAT.
  • mobkilling:
    • Added mobkilling-use-wildstacker-hook option to config.yml to disable WildStacker hook.
    • Added the name-match-mode option to specify how mob names should be matched. Possible values: EQUALS, STARTS_WITH, ENDS_WITH.
  • playtime:
    • The ignore-afk option now respects the CMI AFK system.
  • smithing:
    • The item option is now optional.
    • The mode option is required only for 1.20+ versions.
  • citizens_deliver, citizens_interact, servernpc_deliver, servernpc_interact, znpcsplus_deliver, znpcsplus_interact:
    • The npc-id option now supports lists.
  • ecobosses_killing, ecomobs_killing:
    • Added the id-match-mode option to specify how mob IDs should be matched. Possible values: EQUALS, STARTS_WITH, ENDS_WITH.
  • mythicmobs_killing:
    • Added the name-match-mode option to specify how mob names should be matched. Possible values: EQUALS, STARTS_WITH, ENDS_WITH.
Finally, some other miscellaneous improvements to highlight are:

  • Added the cancelstring option (list) to quests, which can be used to specify messages sent to the player when a quest is cancelled.
  • Introduced the expirystring option (list) to quests, which can be used to specify messages sent to the player when a quest expires.
  • Since cancelcommands already existed, we've added expirycommands for consistency.
  • Added the vaultreward option to simplify the creation of quest packs compatible with multiple economy plugins.
The update also provisionally reinstates support for older Java versions via a downgrader. Plugin JARs are now provided in different versions. For example, ! Quests-JDK21 or Quests-3.15.1-84eae15.jar is the recommended JAR for Java 21+ (hence JDK21 and no downgraded in the name). Other downloads contain Quests builds for older Java versions, automatically downgraded. Please note that the quality of the downgrader's output may vary, though it is generally stable. Avoid using these older versions unless absolutely necessary. Some of the older versions may require additional flags in the startup command (for example --add-opens=java.base/java.text=ALL-UNNAMED just after java in Java 17 builds).

For further details on what has changed, see the commit log below.

Commit log since v3.15

f7de2dc - Update parent of pinataparty_hit-(task-type).md <Leonardo Bishop>
2c81c6c - Fix action bar on CraftBukkit (it's not supported) <Krakenied>
d2b5759 - Fix CraftBukkit hex color adapter compatibility <Krakenied>
16794d9 - Fix ItemGetter on CraftBukkit 1.8 Improve setting item unbreakability <Krakenied>
52ded1a - Add expiry commands option <Krakenied>
32aa65f - Add CMI ignore-afk support Closes https://github.com/LMBishop/Quests/issues/566 <Krakenied>
33c409d - Add namespaced enchantments support to 1.13+ and 1.14+ item getters <Krakenied>
f92fc76 - Add composting task type <Krakenied>
46501dd - Make the item option in composting, consume, crafting and smithing optional <Krakenied>
03be381 - Fix config validators descriptions <Krakenied>
80e8af6 - Add spawn reason option to mob killing task type Closes https://github.com/LMBishop/Quests/issues/460 <Krakenied>
888d55b - corrected grammar from enchanting-(task-type) <Léo>
5539b3b - Add Goat support to milking task type Fixes https://github.com/LMBishop/Quests/issues/620 (ignore baby mobs) Closes https://github.com/LMBishop/Quests/issues/607 (goat support) <Krakenied>
92774fc - Fix boss bar ClassNotFoundException on 1.8 Boss bars are supported only on 1.9+ <Krakenied>
7e2124c - Move instanceof Goat check to version specific handler <Krakenied>
587172c - Apparently getEntitySpawnReason method is supported only on Paper + forks <Krakenied>
91b094f - Improve PAPI refresh-ticks option behavior <Krakenied>
68c2739 - Ignore ZNPCsPlus hologram serialization errors Closes https://github.com/LMBishop/Quests/issues/618 <Krakenied>
f62133d - Ensure that the entire holo hasn't been skipped <Krakenied>
2896ac5 - Improve CoreProtect check behaviour even more Add CoreProtect block lookup delay option <Krakenied>
32004ae - Update ServerNPC to latest version <Krakenied>
d2d5202 - Add item option to mining task type <Krakenied>
57b3b3d - Send track advancement on building and mining subtract too <Krakenied>
80b9c51 - Add allow negative progress option to building task type <Krakenied>
4c8f277 - Fix building task type subtract for loop returning instead of continuing <Krakenied>
a5f5df1 - Added lacking information to smithing-(task-type).md <Léo>
d7d5e3e - Try to get progress placeholders by task type too <Krakenied>
7cef6c6 - Validate progress-placeholders task references <Krakenied>
7c8618f - Improve QItemStack placeholder processing <Krakenied>
7735295 - Improve regular expression Adjust invalid task reference finder to it <Krakenied>
2b35e25 - Update parameter in sendTrackAdvancement calls <Krakenied>
c7f18da - This one is actually useless <Krakenied>
69ed205 - Handle null progress properly Fixes https://github.com/LMBishop/Quests/issues/619 <Krakenied>
10fc3ae - Delay Legacy Material Support initialization Do not init it at all if not required <Krakenied>
e418106 - Remove unnecessary HashMap#containsKey call from hot path Related to https://github.com/LMBishop/Quests/issues/629 <Krakenied>
038cc4a - [ci skip] Update Gradle to 8.6 <Krakenied>
d7405ee - Clarity changes to smithing task type + docs Related to https://github.com/LMBishop/Quests/pull/627 <Krakenied>
e0b4ce7 - [ci skip] Fix PyroFishingPro fishing task type docs Related to https://github.com/LMBishop/Quests/issues/607 <Krakenied>
9ccf075 - [ci skip] Update building, mining, mob killing and milking task type docs <Krakenied>
17f88db - Use optimized map implementation for quest progress file if available <Krakenied>
fe0eeea - Update workflows actions Use actions/setup-java@v4 for caching <Krakenied>
1578f94 - Implement hatching task type <Krakenied>
5d60934 - Add CustomFishing compatibility <XiaoMoMi>
16d1ee5 - remove inner class and set priority <XiaoMoMi>
c1a2be9 - Merge task types into one - customfishing_fishing <Krakenied>
2520b64 - Add missing docs Closes https://github.com/LMBishop/Quests/issues/574 <Krakenied>
1b84913 - Fixes almost unreproducible rewards dupe on completion Closes https://github.com/LMBishop/Quests/issues/543 <Krakenied>
c554962 - Fix docs workflow Update actions/deploy-pages to v4 <Krakenied>
a01d4c9 - Fix build workflow node.js deprecation warning Update gradle/wrapper-validation-action to v2 <Krakenied>
f61b8e1 - Make the workflow build the project correctly <Krakenied>
275546e - Add option to disable WildStacker hook <Krakenied>
6380d8e - Update WalkingTaskType.java <IceWolf23>
0047bd0 - Small refactor <Krakenied>
aea6650 - Add string match mode option <Krakenied>
f422da2 - Make shop and item id options in ShopGUIPlus interaction task types optional <Krakenied>
7a4946e - Add more walking task type modes Fix compile <Krakenied>
0166e27 - Bump gradlew to 8.7 Fix compile again <Krakenied>
3627b9a - Update to Paper-API 1.20.5 Java 21 is now required <Krakenied>
5fdb275 - Make CompatUtils work properly with no-relocation Paper <Krakenied>
6cb4b58 - Implement new item task types <Krakenied>
9824687 - Use better map impl for quest progress files Resolves issues with async placeholders parsing <Krakenied>
f4853ee - Add curing task type <Krakenied>
8cc9a4a - Begin work on villager-type and villager-profession options <Krakenied>
ad82f71 - Add resurrecting task type <Krakenied>
cbdef13 - Begin bucket tasks rework <Krakenied>
2bebaf5 - Finished bucket task types rework <Krakenied>
d78629c - Optimize it a bit <Krakenied>
e48e4a8 - Add missing getter to 1.20 version specific handler <Krakenied>
46d0e7b - Do not log the entire boss bar exception Closes https://github.com/LMBishop/Quests/issues/659 Closes https://github.com/LMBishop/Quests/issues/637 <Krakenied>
96e1d3e - Fix auto saving feature due to regression caused by https://github.com/LMBishop/Quests/commit/e5c0237bcb45c5d308e0a2b763f50ac97135c768 <Krakenied>
e46b65f - Further debugging optimization Actually refactor a large amount of code lol <Krakenied>
cbdcd1e - Fix codacy issue <Krakenied>
40394f8 - Add not supported to registration message <Krakenied>
5c62483 - Extract method getting registration message <Krakenied>
832e3e5 - Fix typo <Krakenied>
011fa31 - Remove another unnecessary HashMap#containsKey call from hot path Do not use Object2ObjectArrayMap as it doesn't seem to be enough performance-beneficial <Krakenied>
8338339 - Add removed constructor back <Krakenied>
7f44beb - Add Oraxen support <Krakenied>
b67ffad - Add cancelstring and expirystring options Closes https://github.com/LMBishop/Quests/issues/667 <Krakenied>
d7a0277 - Add docs for tasks introduced in #642 <Krakenied>
a82c96b - Fix locked-display <Krakenied>
87244bd - PyroFishingPro support improvements <Krakenied>
9ba3637 - Update Gradle Wrapper to 8.10 <Krakenied>
22d882e - Do not send track advancement for inventory task if progress didn't change <Krakenied>
de2b720 - Rewrite Gradle files to use DSL which is actually supported by IDEs Change the downgrader to a modern supported one <Krakenied>
16aaa53 - Add number formats Closes https://github.com/LMBishop/Quests/issues/613 <Krakenied>
28ebbfc - Do not reload base configurations twice <Krakenied>
b64b5a8 - Finally fix autosaves after regression caused by https://github.com/LMBishop/Quests/commit/e5c0237bcb45c5d308e0a2b763f50ac97135c768 <Krakenied>
bf93e24 - Improve server version getter <Krakenied>
2c27237 - Add {questcolored} to menu elements and other places <Krakenied>
ce6c0e1 - Allow minus sign usage in quest ids ( https://github.com/LMBishop/Quests/issues/683) Add Apache Commons Lang NOTICE.txt to resources <Krakenied>
1e63d03 - Rewrite getEffectiveStartedQuests method <Krakenied>
3113ee8 - Get autostart from config only once <Krakenied>
04f320e - Change condition order for performance reasons <Krakenied>
033ae8f - Rewrite trackNextQuest so autostart Quests are tracked properly Closes https://github.com/LMBishop/Quests/issues/570 <Krakenied>
777be35 - Get rid of this deprecation warning <Krakenied>
9ac04c1 - Add compiler args to build script <Krakenied>
d54be31 - Rewrite trackQuestForPlayer method, so it notifies player about the same quest only once <Krakenied>
80c336d - Track next quest after messaging player about completion <Krakenied>
60dc3d5 - Update ServerNPC API-only JAR <Krakenied>
47b68ec - Add trading task type Closes https://github.com/LMBishop/Quests/issues/565 <Krakenied>
7618389 - Fix autostart for quests with individual option set <Krakenied>
195b631 - Optimize a bit walking task type <Krakenied>
b68f28a - Add dedicated getter for enums <Krakenied>
63c874e - Update some project dependencies <Krakenied>
816e0c7 - Clean up task type manager Mark some TaskType methods as final as they aren't really meant to be overridden <Krakenied>
0f1de95 - Remove Folia dependency as we don't really use it <Krakenied>
ef0a494 - Fix HIDE_ATTRIBUTES for 1.20.5+ Change invalidItemStack to screaming snake case <Krakenied>
68aaae8 - Add support for multiple NPC ids in deliver/interact task types <Krakenied>
6beb010 - Set walking mode accepted values from enum <Krakenied>
7248af6 - Add PBT & CoreProtect support to farming task type Do not increment farming and mining progress if CP or PBT was expected to be used but the hook is not set <Krakenied>
14cca41 - Update CustomFishing to latest version (requires update) <Krakenied>
5567117 - Update jvmdowngrader to 1.1.2 <Krakenied>
e2a644f - Drop items that could not be stored Closes https://github.com/LMBishop/Quests/issues/680 <Krakenied>
121e526 - Add Quests.ShowUnsupportedCount property <Krakenied>
e16d386 - Vault reward integration <Krakenied>
cb2b64e - Bump paper-api to 1.21.1 to ensure compatibility with the latest version <Krakenied>
33fb251 - Add some new boss bar options <Krakenied>
e70150b - Add new options to interact task type <Krakenied>
4f254f5 - A little docs cleanup <Krakenied>
c2cd690 - Get rid of unnecessary streams <Krakenied>
15a080e - Add info about supported open source PlayerBlockTracker implementations to the config <Krakenied>
658a6a2 - Fixed wrong description for replenishing task <Léo>
63c5cd0 - Do not return null for a negative cooldown placeholder Fixes https://github.com/LMBishop/Quests/issues/669 <Krakenied>
1f2f4ad - Fix bad defining items references in the docs <Krakenied>
84eae15 - Prepare for release 3.15.1 Bump version number <Krakenied>

More information

----------, Aug 28, 2024

Hello everyone,

This update adds a bunch of new features including: new task types and improvements to existing ones, support for the experimental Folia, a new quest item type, bossbar / actionbar support, and several bug fixes.

Provisional support for the Folia project has been implemented. Folia is a fork of Paper which adds "regionized multithreading" to the server; Quests should now be able to make use of this new multithreading system.

A new BossBar and ActionBar system as been added, which will allow you to display task progress and progression through both these methods. This can improve player experience by not requiring them to open the quests menu to see how close they are to completing a task. This system uses a new set of placeholders called "progress placeholders", whose purpose is to represent the progress for each task. For now, these must be manually set per quest, but in the future there are plans to automatically provide template strings for each task type, removing the need for manual configuration.

There are 9 new task types: blockitemdropping, projectilelaunching, pyrofishingpro_fishing, ecomobs_killing, znpcsplus_interact, znpcsplus_deliver, servernpc_interact, servernpc_deliver, and pinataparty_hit. The configuration for these tasks can be found on the wiki. In addition to new tasks, there are some fixes and improvements to exiting ones, such as: async support for placeholderapi_evaluate task type, better support for smithing task type, farming and position task type reworks, better mode detection in walking task type, and more.

Finally, some other miscellaneous improvements to highlight are: a new ItemsAdder quest item, time-limit placeholder, addition of "cancelcommands" option in quests, support for namespaced sounds, an improvement error messages, support for '_' and '-' in quest and task IDs, PlaceholderAPI support for GUI titles and fixes, and per-menu GUI trimming options. For a full list of changes, please review the commit log below.

A special thanks to the following people on GitHub for their contributions, they have made up the bulk of this update and without them then these changes would not have happened: Krakenied, Elikill58, NahuLD, svaningelgem, and AfkF24.

Commit log since v3.14.2

593d3af - Add ItemsAdder quest items <LMBishop>
b721847 - Add some config <Elikill58>
e5c0237 - Add support for Folia <NahuLD>
3448146 - Fix issues and wrap up work <NahuLD>
63d8c6b - Remove unused region scheduler <NahuLD>
481773d - Add missing scheduler wrapper methods for future usage <NahuLD>
af949f2 - Fix quest controller ignoring count-towards-limit <LMBishop>
548deb8 - Actually fix counts-towards-limit <LMBishop>
104e1f6 - Fix issues with delay ticks for Folia scheduler <NahuLD>
ae262e0 - Add time limit placeholder (closes #524) <LMBishop>
0f5ccf8 - Make placeholder always return no tracked quest <LMBishop>
86a365d - Add allow negative progress option to mining task <LMBishop>
d8c0362 - Alternative task constraints implementation <Krakenied>
ffa6b7d - Update task types to the new impl <Krakenied>
0d81659 - Some refactor Use new constraints impl <Krakenied>
8642fec - Add alternative raw value ctor <Krakenied>
0b0cd61 - Add alternative single constraint ctor <Krakenied>
dc25526 - Remove finals to keep the project code style <Krakenied>
3e677ae - Clean project and update gitignore <Elikill58>
0de1838 - Remove bungee in gradle <Elikill58>
95d5363 - Add bossbar and full track advancement <Elikill58>
fa3e19f - Fix error <Elikill58>
b30c24a - Add actionbar <Elikill58>
b6802d4 - Prevent possible issue <Elikill58>
ee4e229 - Change default values <Elikill58>
541d53f - Fix 0/1 value <Elikill58>
a67162a - Better support for smithing task type in 1.20 <Krakenied>
edfc159 - Rewrite position task type <Krakenied>
816be92 - Fix build after rebase <Krakenied>
953ca7e - Get rid of tabs <Krakenied>
93e7821 - Fix not deleted bossbar <Elikill58>
a101ba1 - Add missing import <Elikill58>
c7c9acf - Rewrite & optimize boss bar <Krakenied>
1cbede7 - Add dedicated progress placeholders section <Krakenied>
78f8118 - Rewrite title and action bar handles Add hex support to action bar (Paper only feature) <Krakenied>
ae484b6 - Optimize and organize imports <Krakenied>
7f4b9d3 - Add block item dropping task type Closes https://github.com/LMBishop/Quests/issues/544 <Krakenied>
29d15b2 - Organize imports in common project <Krakenied>
41e6964 - Clean up task type registration <Krakenied>
43812ea - Optimize send track advancement method more <Krakenied>
b94b596 - Fix up task type manager <Krakenied>
68010d3 - Add and remove players from the boss bar synchronously <Krakenied>
b462fe2 - Farming task type rework Closes https://github.com/LMBishop/Quests/issues/548 <Krakenied>
15011f6 - Make boss bar color and style customizable <Krakenied>
157a13f - Detect the server version using a long-standing API <Krakenied>
c9d978f - Additional online check in inventory task type Fixes NPE on logout <Krakenied>
ba56278 - [ci-skip] Update Gradle wrapper <Krakenied>
9206827 - Remove expired links from docs <LMBishop>
af2b1f2 - Dynamic boss bar style and color support <Krakenied>
3f22618 - Better required amount detection <Krakenied>
9aa600d - Add cancel commands Partially closes https://github.com/LMBishop/Quests/issues/558 <Krakenied>
9043a4d - Improve item getters Implement separate skull getters <Krakenied>
8ddb69a - Schedule inventory check at location to avoid weird behaviour <Krakenied>
af711c9 - Add PyroFishingPro fishing task type <Krakenied>
d7f1c29 - Nullable block interact task type support <Krakenied>
25d27b2 - Remove unnecessary method calls <Krakenied>
5facd15 - Add useful method overloads <Krakenied>
1b44d06 - Implement projectile launching task type <Krakenied>
5b61fc4 - Fix walking task type not detecting horse mode <Krakenied>
25a2d1a - Bump Gradle wrapper to 8.5 <Krakenied>
ee59747 - Bump checkout and setup-java actions to v4 Improve workflow run condition <Krakenied>
98e55ac - Fix CoreProtect delay caused by queue Closes https://github.com/LMBishop/Quests/issues/162 <Krakenied>
369ded8 - Add namespaced sounds support Closes https://github.com/LMBishop/Quests/issues/585 <Krakenied>
554bb10 - Add namespaced types support to the 1.14+ item getter <Krakenied>
a55916d - Do not try to load tasks with unresolved task type Closes https://github.com/LMBishop/Quests/issues/583 <Krakenied>
e6f0d05 - Add FabledSkyBlock 3 support <Krakenied>
3551c1e - EcoMobs support <Krakenied>
b1bf539 - Add WildStacker support to mob killing and breeding task types Closes https://github.com/LMBishop/Quests/issues/584 <Krakenied>
a184e76 - Also allow '_' and '-' to be used as "characters". <svaningelgem>
65f0ad3 - Reverting back to for-loop because of performance considerations. <svaningelgem>
454c8d4 - List all available categories when you encounter a missing one. <svaningelgem>
597086d - camelCase the variable name. <svaningelgem>
2c96d1a - Add PlaceholderAPI support in GUI titles <AfkF24>
c5f63c4 - Set back button to correct slot if GUI trim is off <AfkF24>
b2918ae - Fix quests occupying pagination row slots <AfkF24>
af1a539 - Add GUI trimming options per GUI type <AfkF24>
e356e1c - Support custom elements in started quests menu <AfkF24>
48ee7a6 - Add async and refresh-ticks options to PAPI task type <Krakenied>
832e99c - Ensure that custom menu element commands are ran from Folia GlobalTickThread Closes https://github.com/LMBishop/Quests/issues/601 <Krakenied>
3c354a0 - Update documentation for release 3.15 <LMBishop>
df3263b - Add ZNPCsPlus support <Krakenied>
4cdb262 - Add ServerNPC support <Krakenied>
399dd21 - Handle empty names in another way <Krakenied>
704ece3 - Do not send track advancement for PAPI task type as it behaves really weird <Krakenied>
0229544 - Add ServerNPC and ZNPCsPlus interact task types too <Krakenied>
604537b - Use current hologram data for ServerNPC task types <Krakenied>
bb6a273 - Another compatibility requirement for ServerNPC tasks <Krakenied>
0cc6541 - Add PinataParty support Closes https://github.com/LMBishop/Quests/issues/518 <Krakenied>
c650dfb - Remove unnecessary classes from IridiumSkyblock JAR to reduce its size <Krakenied>
b636bef - Update documentation <LMBishop>
2343ebc - Bump version number <LMBishop>

More information

----------, Feb 18, 2024

This update fixes an issue where the plugin would crash when attempting to modify quest progress files for offline players. This also fixes events for the ecobosses_killing task type not registering, and fixes errors thrown from the ShopGUIPlus task type.

Commit log since v3.14.1

8a0e5d3 - Add null check for shop and de-duplicate common code <LMBishop>
325b78f - Add @EventHandler annotation to BossKillEvent <LMBishop>
8017642 - Fix some moddata commands blocking the main thread <LMBishop>
01c1457 - Fix broken links in documentation <LMBishop>
3345d07 - Bump version number <LMBishop>

More information
----------, Jul 11, 2023

This update fixes a bug where the plugin would generate errors on older versions of Minecraft.

Commit log since v3.14

b765f1b - Add changelog generator script <LMBishop>
7a7298e - Revert "Optimize TaskUtils#getApplicableTasks method" <LMBishop>
e079568 - Add missing documentation for mobs in taming and breeding tasks <LMBishop>
758fe7f - Bump version number <LMBishop>

More information

----------, Jul 7, 2023

Hi everybody,

This update has a whole lot of bug fixes and technical improvements. To list a few, the Essentials task type breaking on certain versions has been fixed, the breeding task has been improved for server running 1.10+, the walking task now works properly for vehicles, and there have been various performance optimisations made.

Additionally, this update adds a few new task types: replenishing, playerpoints_earn (for the plugin PlayerPoints), and ecobosses_killing (for the plugin EcoBosses). There are also new options for several other task types: blockbreak can now query PlayerBlockTracker (an alternative to CoreProtect), shearing can now be used on entities other than sheep and can be restricted to specific colours, and most tasks which require an item has a new 'exact-match' option.

Finally, the Quests wiki has a new home at https://quests.leonardobishop.com, and documentation is now distributed with the source code. Previously undocumented task types (such as blockshearing and smithing) have now been properly documented, among other missing options.

A special thanks to @Krakenied on GitHub for the majority of these changes! And apologies for my own absence, as usual I am busy at university; however, I have quite a bit of time now over summer to set aside for Quests, so updates and support should be a bit more regular.

(P.S. For those asking, Quests is already compatible with Minecraft version 1.20.x)

Commit log since v3.13.3

9399366 - Replace fastutil Int2ObjectOpenHashMap with hppc IntObjectHashMap Closes https://github.com/LMBishop/Quests/issues/497 without significant plugin JAR file size change <Krakenied>
e06d3f0 - Fix ShopGUIPlus task types Fixes https://github.com/LMBishop/Quests/issues/496 <Krakenied>
5e552ee - Fix Essentials task types Closes https://github.com/LMBishop/Quests/issues/488, https://github.com/LMBishop/Quests/issues/468, https://github.com/LMBishop/Quests/issues/457 and https://github.com/LMBishop/Quests/issues/290 <Krakenied>
efa6d10 - Improve world validation <Krakenied>
59dbcfb - Improve breeding task type 1.10+ versions support <Krakenied>
8cb5b45 - Set block variable before the loop <Krakenied>
4d61a74 - Add allow silk touch option Partially closes https://github.com/LMBishop/Quests/issues/499 <Krakenied>
2c36268 - Remove unnecessary import <Krakenied>
cbbb2fa - Bump paper-api to 1.19.4 <Krakenied>
ab318d1 - PlayerBlockTracker support Closes https://github.com/LMBishop/Quests/issues/499 <Krakenied>
1fb59f1 - Fix PlayerBlockTracker event calling order <Krakenied>
9b186a3 - Fix the event order after task types registration <Krakenied>
97e4ae6 - Fix and improve listener plugin comparing condition <Krakenied>
b110eae - Optimize TaskUtils#getApplicableTasks method <Krakenied>
04c62a2 - Update gradle to 8.0.2 <Krakenied>
04527a2 - Fix MMOItems and Mythic Lib repo <Krakenied>
34a84d7 - Fix CaveVinesPlant not being handled properly <Krakenied>
a37bb72 - Handle vehicles movement separately Closes https://github.com/LMBishop/Quests/issues/464 <Krakenied>
042368e - Add PlayerPoints support Partially closes https://github.com/LMBishop/Quests/issues/494 <Krakenied>
e45785c - Do not register BrewingTaskType for unsupported server versions Closes https://github.com/LMBishop/Quests/issues/503 <Krakenied>
cab640a - Fix frogs and turtles breeding <Krakenied>
b8ef517 - Fix build <Krakenied>
7f72147 - Update gradle to 8.1.1 <Krakenied>
330a71e - TaskUtils improvements <Krakenied>
2e3883f - Use matchEntity method in breeding task type <Krakenied>
4fa851f - Implement replenishing task type <Krakenied>
6f88c39 - Register replenishing task type <Krakenied>
9e7fb30 - Add support for shearing other entities (i.e. mushroom cows and snowmen) <Krakenied>
a77f978 - Building task type refactor <Krakenied>
3f029ab - Interact task type refactor <Krakenied>
b5d0db2 - Mining task type refactor <Krakenied>
e5e3e87 - Mob killing task type refactor <Krakenied>
c7a5e4e - More TaskUtils improvements <Krakenied>
8ba64ad - Command task type refactor More TaskUtils changes <Krakenied>
b8ede73 - Add nullability check <Krakenied>
97ab313 - Refactor mythic mobs killing task type <Krakenied>
189414e - Add missing condition <Krakenied>
4d19504 - Improve brewing stand player detection <Krakenied>
a848ab3 - Quest items refactor <Krakenied>
7e8328d - Add exact match option to brewing task type <Krakenied>
c306daa - Add exact match option to consume task type <Krakenied>
ada3f9a - Remove deprecation <Krakenied>
5b587a8 - Add exact match option to crafting task type <Krakenied>
2393dc0 - Add exact match option to fishing task type <Krakenied>
4211526 - Add exact match option to interact task type <Krakenied>
9a227de - Add exact match option to mob killing task type <Krakenied>
1880b7f - Add exact match option to smelting task type <Krakenied>
d9d2ed4 - Add exact match option to smithing task type <Krakenied>
e855c4b - Set exact match in TaskUtils <Krakenied>
5176fe2 - Improve getConfigBoolean method <Krakenied>
924bba7 - Use getConfigBoolean method <Krakenied>
0086abe - Do not color mythic mobs killing task type mob name Improve matchString performance <Krakenied>
0a78d93 - Add support for custom PlayerBlockTracker forks <Krakenied>
bf939b6 - Bump paper-api to 1.20 <Krakenied>
4949060 - Bump paper-api to 1.20.1 and HikariCP to 5.0.1 <Krakenied>
3755926 - Remove unnecessary deprecation <Krakenied>
a6d0369 - Improve breeding task type description <Krakenied>
6d1cd5f - Update gradle to 8.2 and shadow to 8.1.1 <Krakenied>
114d7c2 - Improve build workflow <Krakenied>
f2b6f3c - Improve inventory task type detection <Krakenied>
4c9a7d8 - Add exact match option to inventory and citizens deliver task types <Krakenied>
0aac85f - Migrate docs to GitHub pages <LMBishop>
a5395de - Update links to wiki <LMBishop>
fb1dda5 - Add missing task types to documentation <LMBishop>
112fe6c - Add ecobosses_killing task type <LMBishop>
8fd02cb - Fix missing dependencies for EcoBosses <LMBishop>
cc557de - Bump version number <LMBishop>

More information

----------, Jul 7, 2023

This update is a largely technical one fixing a lot of bugs and issues. It fixes a duplication glitch with the crafting task type, some issues with the with the smelting, distancefrom, and farming task types, and a rewrite of the menu system. It also adds more granular permissions for commands, see the wiki page.

For further details on what has changed, see the commit log below.

Commit log since v3.13.2

84a4b07 - [ci skip] Add distribution status to README <LMBishop>
0d439ce - Fix IAE in DistancefromTaskType <Krakenied>
c5fb1a8 - Bump shadow from 7.0.0 to 7.1.2 <Krakenied>
41da82c - Bump gradlew from 7.4 to 7.5.1 <Krakenied>
0c738b2 - Fix jitpack being stupid <Krakenied>
2799ccf - Make authlib non-transitive to hide an IDE warning https://advisory.checkmarx.net/advisory/vulnerability/Cxeb68d52e-5509 <Krakenied>
94952f8 - Fix ShopGUI+ task types (breaking change) https://github.com/brcdev-minecraft/shopgui-api/releases/tag/3.0.0 <Krakenied>
e0c4292 - Improve build workflow <Krakenied>
e1cca69 - Use citizensapi instead of citizens <Krakenied>
446de98 - Add color check Part of https://github.com/LMBishop/Quests/issues/434 <Krakenied>
f80eb1b - Add missing config validators <Krakenied>
af4c850 - Remove redundant suppression <Krakenied>
fc2008a - Improve crafting task type Fixes https://github.com/LMBishop/Quests/issues/430 <Krakenied>
5d9a3d1 - Fix smelting task type as well <Krakenied>
6be8d85 - Fix smelting task type older versions startup error <Krakenied>
3574d27 - Use enhanced switch statement <Krakenied>
8ed5f8c - More crafting task type detection improvements Fixes https://github.com/LMBishop/Quests/issues/430 with ctrl pressed <Krakenied>
826da67 - Apply fixes to smelting task type as well <Krakenied>
41f0054 - Get task amount needed after checking the item <Krakenied>
5d7c0db - Move smelting task type item debug logging <Krakenied>
43588fe - Apply fixes to smithing task type too Add support for more than 1 result item <Krakenied>
0fea32c - Brewing task type rework Closes https://github.com/LMBishop/Quests/issues/434 <Krakenied>
242f8b9 - Optimize adding aliases - use Collections#addAll <Krakenied>
2ef1b89 - Remove unused imports <Krakenied>
b191d97 - Store menu elements in Int2ObjectOpenHashMaps <Krakenied>
03f8ab7 - Use pattern variables <Krakenied>
eb5d68c - Use Collections#max to find max element <Krakenied>
a2c013d - Optimize walking mode validation Lowercasing the mode is not needed because of a config validator <Krakenied>
c279b19 - Some build.gradle changes and updates <Krakenied>
3861112 - Fix MythicMobsKillingTaskType config validators not being added <Krakenied>
2152026 - Bring support for older ShopGUIPlus versions back Fixes https://github.com/LMBishop/Quests/issues/473 <Krakenied>
7cb36f6 - Optimize entity-related walking modes validation <Krakenied>
099519e - Optimize debug logging Fixes https://github.com/LMBishop/Quests/issues/452 <Krakenied>
bf20ca9 - Add block shearing task type Closes https://github.com/LMBishop/Quests/issues/416 <Krakenied>
606f421 - Optimize debug logging a little more <Krakenied>
2cad319 - Fix build badge <Krakenied>
5743352 - Add command permissions <snake>
c7bf2ba - Add option for automatically closing GUI (closes #480) <LMBishop>
7a18c1f - Refactor menu code <LMBishop>
52198a3 - Fixed result of PreStartQuestEvent not being used in further checks <Tom>
82af8a4 - Fix quests not being sorted <LMBishop>
bc11bfd - Some improvements to farming and block shearing task types <Krakenied>
bf186c0 - Additional material validation Closes https://github.com/LMBishop/Quests/issues/445, https://github.com/LMBishop/Quests/issues/349 <Krakenied>
1451820 - Legacy pattern doesn't detect § symbol <Tom>
579287b - Use version specific methods to get item in main hand <Krakenied>
bc8938a - Fix ArrayIndexOutOfBoundsException Do not show back menu element when category menu is null <Krakenied>
5a28efa - Bump version umber <LMBishop>

More information
----------, Feb 16, 2023

This update adds a new smithing task type and fixes a couple of bugs. ShopGUI+ has been updated to their new API so please make sure ShopGUI+ is up-to-date before downloading this. Also, CoreProtect checks have been moved off the main thread to stop locking, however this may result in longer times for block breaks to count towards quests. Also, a bug concerning allow-partial-completion for inventory tasks has been fixed.

Commit log since v3.13.1

b0f75f4 - Add animal list to breeding task type <LMBishop>
5a2b90c - Add interact task type (closes #401) <LMBishop>
09ed287 - Change configuration key from animal to mob for breeding type <LMBishop>
84eb73f - Remove BrewingCertainTaskType.java <LMBishop>
f753a6c - Fix interact task type <LMBishop>
2609d06 - [ci skip] Update Java version in README <LMBishop>
43c204c - Remove default from allow-partial-completion (closes #413) <LMBishop>
92aa72c - Run CoreProtect check async (closes #432) <LMBishop>
f4b84d6 - Update ShopGUI+ version (closes #429) <LMBishop>
2bc07a0 - Fix enchanting task type bug <David Villarreal>
01f1398 - [ci skip] Reword a couple of issue form questions <LMBishop>
3c6a18a - Add smithing task type and fix mining CoreProtect bug <David Villarreal>
d709ab4 - Bump version number <LMBishop>

More information
----------, Aug 17, 2022

This update fixes a couple of bugs where the reverse-if-broken would not work properly for the blockplace task, and where the position task would incorrectly require an invalid option.

Commit log since v3.13

d35afe2 - Fix reverse-if-broken BuildingTaskType NPE <Krakenied>
3642b3c - Remove invalid option from position task type <LMBishop>
615aa14 - [ci skip] Update README.md <LMBishop>
77ab390 - Bump version number <LMBishop>

More information
----------, Jul 8, 2022

Hello everybody.

This update adds a new taming task type, and adds more options to the enchanting and mobkilling types. Additionally, this update adds support for quest items from the ExecutableItems plugin.

All task types which end in 'certain' have been merged into their non-certain counterparts. For example, 'blockbreakcertain' and 'blockbreak' are now one task type. This was done as it makes a bit more sense to just have one task type with an optional field. To ensure everybody's configuration does not suddenly break, both names can be used to refer to the same task type. This also comes with a refreshed wiki for each task type. Rather than having all types on one page, each task type now has its own page. You can find them all here: https://github.com/LMBishop/Quests/wiki/Task-types

Additionally, extended problem descriptions can now be viewed by hovering over them on modern Minecraft versions. This should help if you do not understand a specific problem. You can also now give players quest items from a command, please see the wiki on how to do this.

To help with creating tasks, the quests debugger has been added. This is to help you if you find that a specific quest is not working, but no problems have been raised; the debugger will go through exactly what a task type is doing and print it out for you. Finally, an issue where quests progress files failed to load on startup has been fixed.

As always, view the commit log for a full list of changes.

Enjoy!

Commit log since v3.12

0f428e2 - Add taming certain task type <Krakenied>
075419c - Move autostart check to start method (closes #390) <LMBishop>
7cea3ec - [ci skip] Update CONTRIBUTING.md <LMBishop>
cf91503 - Add extended problem descriptions and MiniMessage <LMBishop>
86f2d42 - Fix plugin dependent task types Fixes https://github.com/LMBishop/Quests/issues/397 <Krakenied>
252239e - Use computeIfAbsent exclsively on async thread (closes #404) <LMBishop>
9236145 - Use Paper supplied Adventure rather than shading <LMBishop>
f10a592 - Optimise imports <LMBishop>
611c8bb - Check quest still exists (closes #402) <LMBishop>
ed09b10 - Added items subcommand to give a specific amount of a quest item to a player. <MihaiChirculete>
43060c0 - Removed condition to be a player when using the "items give" subcommand <MihaiChirculete>
3b45ca1 - Changed param to match rest of the plugin style <MihaiChirculete>
4cf5e75 - Check if quest is started in menu (closes #396) <LMBishop>
2fa380b - Add quests debug command <LMBishop>
ba52997 - Add option to configure log history <LMBishop>
75377a3 - Add boolean return type to storage providers <LMBishop>
a69acc5 - Continue instead of return (closes #409) <LMBishop>
f15acd5 - Add some configuration options to debug report <LMBishop>
ccc2706 - Fix ConcurrentModificationException when player data is being loaded <LMBishop>
196410e - Add debug report & quest commands <LMBishop>
cd4dfb9 - Move applicable tasks to TaskUtils and add debug messages <LMBishop>
6551b69 - Refactor config validation for task types <LMBishop>
12ebaa5 - Merge task type certain types with regular types <LMBishop>
c9a47f7 - Add wildcard to debug command <LMBishop>
34f5f42 - Add specific enchantment & level to enchanting task (closes #408) <LMBishop>
ce4675a - Add item option to mobkilling (closes #403) <LMBishop>
77cded0 - Add executableitems quest item (closes #364) <LMBishop>
417a5fa - Add extended description to warning type <LMBishop>
fd8e806 - Bump version number <LMBishop>

More information
----------, Jul 7, 2022

This update adds new smelting and smeltingcertain task types. It also adds new options to quests: cancellable, counts towards limit, and time-limit, the latter option meaning quests can now 'expire'. Placeholders have also been added which can get the amount of time remaining, and the time which the player started the quest.

A tool to migrate quests data between storage providers has been added, which is accessible via "/quests admin migratedata".

Finally, a bug concerning the inventory task type not working as expected has been fixed, and a few other bug fixes and improvements.

Enjoy!

Note: the plugin will only start tracking quest start times after this update, so existing players with started quests may find that their quests were started on or around the 1st January 1970, as no data exists for them (yet).

Commit log since v3.11

8110d8e - Add smelting task types <Krakenied>
23aeb21 - Fix partial inventory task type completion <Krakenied>
5258cbf - Add fix for citizens_deliver as well <LMBishop>
43e6479 - Make moddata commands IO async (closes #359) <LMBishop>
894f1c2 - Add quests data migration tool <LMBishop>
18fc66d - Fix concurrent migration protection <LMBishop>
70bac90 - Fix nuvotifier_vote not registering (closes #381) <LMBishop>
d89f808 - Add cancellable and counts towards limit options (closes #383) <LMBishop>
824a0a4 - [ci skip] Update badges link <LMBishop>
89b5cba - [ci skip] Replace broken/inactive badges <LMBishop>
ca46689 - Add started field to progress files & database migration <LMBishop>
ac6e763 - Remove default value from new column <LMBishop>
649bb97 - Add started date placeholder <LMBishop>
8068d1e - Add time-limit option and quest expiry functionality (closes #379) <LMBishop>
af8470a - Fix inventory and citizens deliver task types taking too many items <Krakenied>
ec20c79 - Do not count non-creatures damage <Krakenied>
759575c - Bring MythicMobs 4 support back <Krakenied>
231be0a - Add multiple option to mobkillingcertain (closes #266) <LMBishop>
887589d - Fix migrationInProgress boolean not resetting after error <LMBishop>
55691a6 - Prevent migration from similar mysql databases <LMBishop>
547bb09 - Bump version number <LMBishop>

More information
----------, May 6, 2022

This update brings several new configurable options and bug fixes.

The farming task now accepts more blocks and a new mode option has been added. Additionally, the inventory and citizens deliver tasks also now support partial deliveries.

Categories may now be hidden from the quests menu, and quests may now have quest-specific items for the locked, complete, cooldown or no permission states. Custom GUI items may now also have commands attached to them to be executed when the player clicks on it.

The reset and fullreset commands should now be fully functional. Bug fixes have been made for tasks inventory, blockplace, and walking, with an exploit fixed for crafting. Finally, several quality-of-life features such as a command to forcibly open the started menu and cancel all quests have been added, with several other bug fixes and improvements.

Please see the commit log below for the full list of changes.

Commit log since v3.10.1

4360ca0 - Refactor message system (closes #336) <LMBishop>
c38c421 - Add wildcard to quest cancel command (closes #283) <LMBishop>
ad8cbad - Fix reverse-in-broken for BuildingCertainTaskType <Krakenied>
c9d3f64 - Added command to open the started Quests GUI via console/admin for other users. <ofunny>
8182a77 - Start work on version specific handlers (closes #340) <LMBishop>
661a356 - Fix typo <LMBishop>
d510669 - [ci skip] Add git hash to development versions <LMBishop>
3df3596 - Add status badge to README <LMBishop>
7df9ada - [ci skip] Move badge to right place <LMBishop>
b771bac - Fix duplicate hash extension <LMBishop>
8bc887c - Add commands to custom items (closes ##341) <LMBishop>
3b73683 - Add {questid} placeholder to QuestMenuElement (closes #346) <LMBishop>
d0ca0f4 - Add quest-specific status display items (closes #337) <LMBishop>
d794ebd - Bump spigot-api to 1.17.1 for new events support <Krakenied>
abb7edc - Add bucket events to inventory task type <Krakenied>
b5e2e07 - Fix support for older server versions <Krakenied>
526ba8a - Fix inventory task type IllegalPluginAccessException PlayerBucketEvent is an abstract class <Krakenied>
d0e7b27 - Remove unused import statement <Krakenied>
347875e - Improve error handling for MySQL storage provider <LMBishop>
60ebf1a - Remove redundant deprecation suppressions <Krakenied>
d8688bb - Make farming task type plugin field private final instead of public static <Krakenied>
f0edeee - Ignore NOTHING inventory actions in crafting task type Fixes https://github.com/LMBishop/Quests/issues/362 <Krakenied>
1172009 - Add farming task type modes for harvestable blocks support Fixes https://github.com/LMBishop/Quests/issues/363 <Krakenied>
e1b86ec - Fix transport method validation Fixes https://github.com/LMBishop/Quests/issues/358 and many other possible issues that fortunately didn't happen <Krakenied>
c408fdd - Add partial delivery option (closes #360) <LMBishop>
c659b08 - Add option for hidden categories (closes #355) <LMBishop>
372302b - Update MythicMobs to 5.x (closes #350) <LMBishop>
13ec48e - Update actions workflow to Java 17 <LMBishop>
a51b0c6 - Fix reset and fullreset commands (closes #351) <LMBishop>
05a624b - Fix broken path for category custom item commands <LMBishop>
74fa10e - Bump version number <LMBishop>

More information
----------, Apr 18, 2022

This update fixes the plugin completely breaking when trying to process null strings for PlaceholderAPI, and also fixes the incorrect display %quests_started_list% placeholder when using quest-autostart.

Commit log since v3.10

f61b8a7 - Fix quest started PAPI placeholder to work with quest-autostart (closes #323) <LMBishop>
e0a16aa - Add QPlayer::getEffectiveStartedQuests method <LMBishop>
e539a1a - Bump version number <LMBishop>
7bcfd0a - Add null check to PAPI processor (closes #324) <LMBishop>
96aa867 - Revert "Add null check to PAPI processor (closes #324)" <LMBishop>
44884a2 - Update PAPI version <LMBishop>
d4a087d - Add null check to PAPI processor (closes #324) <LMBishop>

More information
----------, Mar 10, 2022

Hi all,

This update adds a new task type for NuVotifier. It also adds global macros (more on that after), the option to change click actions for the menu in light of the 1.18 update disabling middle-click in survival, and a few bug fixes. I would recommend changing the click action for quest tracking if you run a 1.18 server, a suitable alternative being "DROP".

Global macros allow you to create your own values/placeholders in the main configuration and use them within quests files. This helps reduce repetition across your configuration. They are substituted before the file is parsed, so you should be able to use PAPI placeholders within them.

To see how to use global macros, check this wiki page: https://github.com/LMBishop/Quests/wiki/Global-configurations#global-macros

To see how to change the click actions for the menu, check this subsection of the basic configuration wiki page: https://github.com/LMBishop/Quests/wiki/Basic-options#GUI-actions

Commit log since v3.9.2

cc345e0 - Add NuVotifier task type (closes #299) <LMBishop>
332af25 - Update icon link <LMBishop>
7387280 - Add global macros (closes #316) <LMBishop>
68d1e30 - Version dependencies for ci <LMBishop>
7f556fa - Add check for CTRL+Q drop (closes #317) <LMBishop>
e5d62e7 - Fix quest command's behavior <SirSalad>
f22ddb5 - Add UI button customisation (closes #158, closes #319) <LMBishop>
67faa65 - Surround values by quotes in default config <LMBishop>
a156562 - Add warning on initial start up if there are configuration issues <LMBishop>
f3cef22 - Fix stripping line breaks in config loader <LMBishop>
9219457 - Add defaults to UI actions <LMBishop>
338a814 - Bump version number <LMBishop>
ed46078 - Update gradle wrapper version <LMBishop>
3ae56bf - Fix display of incorrect version <LMBishop>

More information
----------, Mar 5, 2022

Hello everybody, hope you're all doing well.

First and foremost, I am currently very busy with university. I'm not able to spend much time adding features to Quests, so I'm having to prioritise bugfixes over features. This also means I haven't been around to provide support or thoroughly test these changes. Please keep this in mind when opening issues.

This update brings a few changes. Citizen IDs can now be specified as opposed to names in citizen tasks. Specific modes of transport for the walking task can now also be required. Please see the the respective task types in the wiki for instructions. The behaviour of automatic quest tracking should also be improved to automatically track the first available quest upon player login, which should assist with servers who only have one active quest at a time. For the rest of the changes, please review the commit log below.

Enjoy!

(P.S. Quests is probably already fully compatible with 1.18, open an issue if this is not the case.)

Commit log since v3.9.1

2b525ad - Nuke DS_Store <LMBishop>
dc81e1e - [ci skip] Clarify issue templates <LMBishop>
df22274 - Add citizens ID support (closes #271) <LMBishop>
e0cee4c - Add modes of transport (closes #269) <LMBishop>
0f20e39 - Fix PAPI task completed placeholder not following config (closes #251) <LMBishop>
6f21bc6 - Add cancel shortcut command (closes #283) <LMBishop>
bb59cb9 - Add data source configuration (closes #275) <LMBishop>
0889f05 - Track first available quest if autotrack is enabled (closes #281) <LMBishop>
f74bd08 - Truncate decimals to 2 d.p. (closes #276) <LMBishop>
f3912fd - Fix broken mobkillingcertain task type (closes #285) <LMBishop>
747726a - Fix suicides counting towards playerkilling (closes #295) <LMBishop>
2885d66 - Fix typo in command help menu <LMBishop>
e32894d - Bump version number <LMBishop>

More information
----------, Dec 3, 2021

  • Fixed ShopGUI+ task type and add shop-specific requirement #243 <- #254
    • Thank you to SirBlobman on GitHub for the fix
    • A shop ID must now also be specified, see the wiki
  • Made display names no longer a requirement for defining items #249
  • Allowed item flag configuration for quest display items #256
  • Fixed quest cancelling for autostarted quests #260
  • Updated slimefun to work with their relocated API #258
  • Fixed PAPI placeholders not being parsed on custom GUI items #235, #246
  • Allowed progress updating for numeric placeholders for the papi parse task type #240
----------, Sep 9, 2021

Quests is still looking for user feedback (final call)! Please consider volunteering some of your time (no more than five minutes) to fill out a quick survey about your experiences using this plugin: https://leonardobishop.com/userfeedback/quests. (Please note: if you have already completed this survey, please do not submit it again, thank you!)

The above survey will be closed within a week of this update.
  • Added some new task types: consume, bucketfill, bucketempty #226, #237
  • Added some new types of quest items: mmoitems and slimefun #221
    • These are native integrations with each respective plugin which should have the following benefits:
    • Allow for easy configuration of items from other plugins in inventory task etc. without adding unnessecary bloat to the plugin
    • Allow the third party plugin to compare the itemstack, rather than quests doing the comparison, hopefully making it more accurate since quests will only directly check the ItemMeta, which could be different depending on how specialised the third party plugin is
    • Prevent having to reconfigure the quests every time an item is changed in the third party plugin
    • See the wiki on how to define these items: https://github.com/LMBishop/Quests/wiki/Defining-items#manually-defining-items
  • Fixed bug where /q a moddata command would not recognise players #232
There are no configuration changes in this update.
----------, Aug 17, 2021

Quests is still looking for user feedback! Please consider volunteering some of your time (no more than five minutes) to fill out a quick survey about your experiences using this plugin: https://leonardobishop.com/userfeedback/quests. (Please note: if you have already completed this survey, please do not submit it again, thank you!)
  • Added quest items & the ability to import items #222
    • Quest items can now be defined: see the wiki for info
    • You can import items using /q a items import <id>
    • Learn how to use reference quest items by viewing the alternative layouts of task types
  • Added variable quest started limits #233 -> #91
    • Thank you for CoolLord22 on GitHub for this addition
    • You can allow different players different quest started limits via permissions
    • See the wiki for more info here
    • Note: this supercedes the previous quest-started-limit option, however quests will still read from this option if it is defined
  • Added ignore afk option playtime task type #234
    • Thank you for CoolLord22 on GitHub for this addition
    • This uses Essentials to detect if players are AFK
    • You can enable this option here
  • Fixed (most likely) placeholders not working within gui if enabled #230
    • Could never replicate the bug in the first place, but I probably found the cause and fixed it
See configuration changes here: https://github.com/LMBishop/Quests/...2f142fec931c2334db434131c4dd3138cd4dcd8759203
----------, Aug 12, 2021

Quests is looking for user feedback! Please consider volunteering some of your time (no more than five minutes) to fill out a quick survey about your experiences using this plugin: https://leonardobishop.com/userfeedback/quests
  • Added superiorskyblock2 support (superiorskyblock_level & superiorskyblock_worth) #227
  • Added votingplugin support (votingplugin_vote) #228
  • Added support to start random quests from specific categories, and for admins to start random quests for players #223
    • /q random [category]
    • /q a moddata random
    • /q a moddata random [category]
  • New configuration messages for new command feedback
See configuration changes here: https://github.com/LMBishop/Quests/...2f142fec931c2334db434131c4dd3138cd4dcd8759203
----------, Aug 8, 2021

----------, Jul 29, 2021

  • Fix categories.yml not generating (lol)
    • categories.yml will always be generated now rather than only on a clean install, however it won't be read if categories are still configured in the main config.yml
----------, Jul 26, 2021

----------, Jul 26, 2021

  • Add task type exclusions if you don't want specific task types to enable
  • Fix ui placeholder customisation
----------, Jul 21, 2021

  • Fixed issue where /q a moddata start and /q a moddata reset did the wrong action and start would in fact reset and vice versa
----------, Jul 20, 2021

----------, Jul 15, 2021

  • Skulls with specific playerdata can now be defined anywhere within Quests where an item stack is accepted #201
    • See the wiki on how to define it
  • Specific PlaceholderAPI strings can now be changed #203
    • See config diff
  • BentoBox task type has been recoded to try and avoid reflection due to their interesting api
  • Implemented item caching on task types which have configured items to help with performance
Configuration changes: https://github.com/LMBishop/Quests/...2f142fec931c2334db434131c4dd3138cd4dcd8759203
----------, Jul 9, 2021

  • Added toggleable cancel menu #199
    • Code (YAML):
      options :
        ...
        # Confirm quest cancellation with a separate menu
        gui-confirm-cancel
      : true
  • Improved quest autotrack to automatically choose the next started quest
  • Added ability to configure certain UI elements
    • This involves changing the placeholder text for 'true' and 'false' for {task:completed} placeholders
  • Truncated the quest requirements list if there is more than one quest needed
    • The plugin will now show "Quest 1 +X more" as the requirement, rather than saying "Quest 1, Quest 2, Quest 3, ..." to stop enormous lores
  • Changed quest logging to not spam the console with (potentially) hundereds of registrations, instead only showing totals at the end
  • Internal code improvements

Config updates: https://github.com/LMBishop/Quests/...2f142fec931c2334db434131c4dd3138cd4dcd8759203
----------, Jul 5, 2021

  • Quests can now play sounds when interacted with
    • Code (YAML):
      options :
        ...
        sounds
      :
          quest-start
      : "ENTITY_PLAYER_LEVELUP:2:3"
          quest-cancel
      : "UI_TOAST_OUT:2:3"
          quest-complete
      : "UI_TOAST_CHALLENGE_COMPLETE:1.25:3"
          gui
      :
            open
      : "ITEM_BOOK_PAGE_TURN:1:3"
            interact
      : "ITEM_BOOK_PAGE_TURN1:3"
    • See the wiki for more info:
      https://github.com/LMBishop/Quests/wiki/Basic-Options#sounds
  • Fixed a bug where the plugin would throw an NPE if UI titles, messages etc were not defined in the config
  • Added JetBrains annotations and more javadoc for developers
See this link for configuration changes
----------, Jun 29, 2021

  • Fixed fishingcertain task increasing progress if the fished item was not the item in the config
----------, Jun 28, 2021

  • Fixed StackOverflowError if quest autostart was enabled
----------, Jun 26, 2021

  • Improved the version checker to not show if the plugin is on a newer version then that returned by Spigot
----------, Jun 25, 2021


  • Fixed a GUI bug where quests were displayed on the GUI as ready to start if the player had reached their quest limit
----------, Jun 24, 2021

----------, Jun 24, 2021

  • Fixed inability to cancel quests through GUI #187
  • Fixed broken time formatting #186
----------, Jun 24, 2021

  • PlaceholderAPI placeholders have been fixed
----------, Jun 22, 2021

Quests has had significant internal changes, hence the new major version, 3.0. There are no major configuration changes, your quests and configs are fully compatible with this version.
  • Add new crafting task type #174, #179
    • See the wiki for usage
  • Quests can now delay the loading of playerdata as a workaround to the problem which is described here. #180
    • For usage instructions, see here
    • This should help prevent servers in a bungeecord network from loading stale data from a MySQL server when a player switches servers
    • Once again, this does not fully solve the issue, but should help mitigate it
  • There have been significant API changes, which are best described by simply looking at the code yourself: https://github.com/LMBishop/Quests
    • The TaskType class (along with a LOT of other stuff) has been moved to a common module, for custom task types you should extend the BukkitTaskType class instead
    • Events have moved package and are now located in com.leonardobishop.quests.bukkit.api.event
      • This means if you have followed the guide on getting quests up on your scoreboard, you must change your AnimatedScoreboard config to match this
    • The QuestsAPI class has been removed as it served little purpose, you can obtain a Quests plugin instance as you would with any other plugin: https://github.com/LMBishop/Quests/wiki/API
----------, Jun 21, 2021

  • Quests now supports MySQL
  • The clean command and options have been removed
    • It has been replaced by a new validation system instead, where the server checks if each loaded quest exists before adding it to their progress file
    • This is default to true
    • Code (YAML):
      options :
        ...
        verify-quest-exists-on-load
      : true
  • Quest auto track will now automatically track the next started quest when a quest is completed
  • mythicmobs_killing task type now supports exact levels
For full configuration changes, see this link: https://github.com/LMBishop/Quests/...e040ff9c065bb11eeb6e30f35ba87694ea45d5ae6096c
----------, Jun 8, 2021

  • mythicmobs_killing task types can now have a minimum level requirement
    • See the wiki
    • Code (YAML):
      tasks:
        killing
      :
          type
      : "mythicmobs_killing"
          amount
      : 1
          name
      : SkeletonKing
          min-level
      : 2
  • The standard mobkillingcertain now has support for multiple name
A version of Quests which features MySQL support is currently in works. If you have a GitHub account, you can download builds of this version for testing by heading to this page, clicking on any run on the sql branch (NOT master) and downloading the JARs near the bottom of the page. ( Example build).

If you want to use these builds, please note the following:
  • The sql branch is based on version 2.16.8 (the version before this)
  • There is no documentation available, other than the comments in config.yml
  • This is an experimental version for testing and development; do not use on production servers
----------, Jun 5, 2021

  • Fixed an issue where the autosave function would also unload players (whoops)
----------, Jun 3, 2021

  • Potential fix to the command task type not acknowledging commands made with plugins such as DeluxeMenus or BoosCooldowns #170
  • Async data loading / saving is now the default (please report issues with data inconsistency to https://github.com/LMBishop/Quests/issues) - again friendly reminder to back up data regularly!
    • The experimental configuration options for async data is now redundant
      Code (YAML):
      options :
       ..
        performance-tweaking
      :
          quests-autosave-async
      : false           # experimental - save asynchronously on autosave
          quests-join-async
      : false               # experimental - load asynchronously on join
          quests-leave-async
      : false             # experimental - save asynchronously on leave
      (these no longer have any effect)
  • Added an about command
  • Restructured storage system internally in preparation for future implementations/expansion
----------, Jun 2, 2021

  • Fixed the missing world validation in the block break certain task #169
----------, May 23, 2021

  • A small fix which allows you to use the whole height of the category page, rather than causing the GUI to be paginated and the bottom row spilling onto the second page

  • This allows the following ridiculous setup to be possible:
[​IMG]
(I am sure there are more sensible uses for this)

Note: this will NOT work for the quests listing as the bottom row is required anyway to display the back button
----------, May 22, 2021

Technology has advanced at such a fast rate which has enabled the possibility of having blank spaces as custom items in the GUI, to make your dreams really come true. very cool.
[​IMG]
Code (YAML):
custom-elements:
  "categories"
: # apply to the categories menu (the main menu by default)
    0
:   # <--- slot 1, note the slots start from 0! so 0 = slot 1 in this case
      display
:
        name
: "&cCustom Boring Item"
        lore
:
         - "&7Some interesting description"
        type
: "DIAMOND_BLOCK"
    1
:
      spacer
: true   # empty slot, just like me
      repeat
: 2       # repeats for 2 slots
Feast your eyes on the wiki https://github.com/LMBishop/Quests/wiki/Custom-GUI-Items
----------, May 13, 2021

[​IMG]
  • Fix | Requirements in the quest display will now only show incomplete quests, rather than every single one
    • Thank you to Minetown / RodneyMKay on GitHub for this change
[​IMG]
----------, Apr 15, 2021

[​IMG]
  • Fix | Fix enchantments not being read for versions 1.8 to 1.12
[​IMG]
----------, Apr 2, 2021

[​IMG]
  • Fix | Fix plugin not loading on Paper (or further forks)
  • Fix | Fix custom item stack not working in inventory and citizens_deliver task types

[​IMG]
----------, Apr 2, 2021

[​IMG]
  • New | Add support for custom items in the GUI
  • New | /q random command
    • This just starts a random quest.
    • Requires permission: quests.command.random
  • Fix | Fix brewing certain task not working
    • Thanks to nivcoo on GitHub for this fix
To view all configuration changes, follow this link.

[​IMG]
----------, Mar 5, 2021

[​IMG]

  • New | "blockbreakcertain" task type now supports CoreProtect checking
    • This should help prevent players from being able to place blocks, then having another player break them in order to complete quests.
    • Code (YAML):
      miningstone:
        type
      : "blockbreakcertain"
          ...
        check-coreprotect
      : false               # (OPTIONAL) if true and CoreProtect is present, the plugin will check its logs for player placed blocks
        check-coreprotect-time
      : 3600           # (OPTIONAL) time in seconds for the maximum logging period to check
    • See this link for info.
  • New | Add options for asynchronous loading and saving on joining and leaving
    • This option is experimental and must be enabled.
    • Code (YAML):
      options :
        ...
        performance-tweaking
      :
          ...
          quests-join-async
      : false               # experimental - load asynchronously on join
          quests-leave-async
      : false             # experimental - save asynchronously on leave
    • If you're going to enable this for performance, disable automatic quest progress file cleaning. Leaving it enabled will negate the performance benefit gained by this.
  • New | Added new task types "shopguiplus_buycertain" and "shopguiplus_sellcertain"
    • Note: I have not tested these as ShopGUI+ is closed source.
    • Wiki: here.
  • New | Add new command /q started
    • Displays all started quests in a single GUI
  • Fix | Quest load errors have been fixed
  • Fix | Null errors have been fixed
To view all configuration changes, follow this link.

[​IMG]
----------, Mar 3, 2021

[​IMG]
  • Fix | Quest tracking can now be disabled
  • Fix | Global display config can now override the quest display config
  • Fix | Experimental async autosaving option added - use only if you're having massive issues with performance
To view all configuration changes, follow this link.

[​IMG]
----------, Feb 16, 2021

[​IMG]

  • New | Global configurations
    • You can now have a global task configuration and a global display item config (which appends text to lores).
    • See this link for info.
  • New | Quests can now be "tracked"
    • This allows players to select a specific quest which they have started.
    • This has no functional effect. Instead, this is intended so you can fetch the quest information and display it on a scoreboard.
    • The tracked quest can be accessed using PlaceholderAPI, leading to results like these:
      [​IMG]
    • I have written a guide for use with animatedscoreboard. This uses the next new feature.
  • New | Quests can now have local placeholders
    • These placeholders can be accessed using PlaceholderAPI, they are used to help retrieve quest information.
    • They are mainly used in conjunction with the tracked quest.
    • Wiki: here.
  • Fix | Performance optimisations have been made
    • Thank you to Auxilor on GitHub for these additions
To view all configuration changes, follow this link.

[​IMG]
----------, Feb 16, 2021

[​IMG]

  • New | "placeholderapi_evaluate" task type can use numerical operators
    • For example, you may now configure the task to be marked as complete if a placeholder evaluates to a number above a certain threshold.
    • See the wiki for more info
  • New | "blockbreakcertain" and "blockplacecertain" task types can now support multiple blocks with data codes
    • Thank you to nivcoo on GitHub for this addition
    • This extends on the previous support for multiple blocks by allowing data codes (not to be confused with IDs) as well
    • See the alternative layout for more info
  • Fix | Task progress is now reset on completion in addition to it being reset on start
    • This fixes problems seen when autostart was enabled
  • Fix | "playtime" task type inaccuracies have been fixed
    • These inaccuracies would appear when Quests was reloaded
  • Fix | Problems with task types not counting progress has been fixed
  • Fix | Placeholders not being registered with PlaceholderAPI has been fixed

[​IMG]
----------, Feb 8, 2021

[​IMG]
  • Fix | Fixed plugin failing to load on servers not running PlaceholderAPI
[​IMG]
----------, Feb 6, 2021

[​IMG]

  • New | Task types "command", "distancefrom", "essentials_moneyearn" and "essentials_balance" added
  • New | Quest placeholders in PlaceholderAPI can now be cached for performance improvements
    • Thank you to Rubenicos on GitHub for this addition
    • Learn how to use this feature here
  • New | Quest progress files can now be "cleaned"
    • This removes any references to quests in players quest progress files which no longer exist.
    • The automatic cleaning of progress files can be enabled in the config, however this is not recommended.
    • Use this feature when deleting or editing quests on a production server. This ensures the plugin does not prevent players from starting new quests if you have deleted a quest which they already started.
    • I recommend backing up the /playerdata/ folder first!
    • Cleaning can be invoked using /q a moddata clean.
  • New | Placeholder API placeholders can now be parsed in Quest GUI items
    • This must be enabled in the config here
  • Fix | The quests completion pipeline has been updated to a queue based system
    • Boring internal explanations ahead:
    • Rather than checking the entire server at one time, when a task gets completed the player is added to a queue which is processed every tick.
    • This results in a more responsive system while improving performance.
    • The rate at which the queue is polled can be configured here
  • Fix | The API for IridiumSkyblock has been updated to the latest version
  • Fix | Triggers for the Inventory task type have been changed
  • Fix | Other internal improvements and changes
You can view the complete changes to the config here.

[​IMG]
----------, Feb 5, 2021

[​IMG]

  • New | More error checking is now done on your configs to help you find any errors
    • Example:
      [​IMG]
    • If there are any problems, you will be told when you reload Quests or when running /q a config.
    • More info here
  • New | Commands will now tab-complete
  • New | A list quest IDs placeholder has been added

[​IMG]
----------, Feb 1, 2021

[​IMG]
  • Fix | Fixed incorrect version showing in plugin.yml
[​IMG]
----------, Jan 7, 2021

[​IMG]

  • New | Placeholders have been fully documented in the wiki, check them out
  • New | Tasks can now be restricted to certain worlds
    • See the wiki for information
  • Fix | Few bugs fixed

[​IMG]
----------, Jan 7, 2021

[​IMG]

  • New | Permission task type
    • See the wiki for information
  • New | PlaceholderAPI task type
    • See the wiki for information
  • New | Cancel command for quests
    • Thanks to Rubenicos on github for this contribution
    • You can now do /q q <questid> cancel to cancel a quest from a command
  • Fix | Inventory quests can now (optionally) show the progress
    • You must manually enable it in the task config:
    • Code (Text):
      inventory:
        type: "inventory"
        amount: 67
        item: "GRASS_BLOCK"
        update-progress: true      # update the progress in the menu

[​IMG]
----------, May 20, 2020

[​IMG]

  • Fix | More descriptive error messages
    • If there are required fields in your task configs which are not defined, quests will point that out to you and not load the quest (preventing future errors/spam in console).
    • [​IMG]
    • [​IMG]
    • [​IMG]

[​IMG]
----------, Apr 26, 2020

[​IMG]

  • Fix | Should have fixed "reverse-if-placed" broken issue
    • Report if it is still happening
  • Fix | Quest cancel menu should no longer break on <1.13 versions
    • Thanks to nivcoo on github for the addition
    • Add the following to your config:
      Code (YAML):
      gui :
        ...
        quest-cancel-background
      :
          type
      : "GRAY_STAINED_GLASS_PANE"

[​IMG]
----------, Apr 23, 2020

[​IMG]

  • Fix | Fixed a null error whcih would appear after deleting quests.

[​IMG]
----------, Apr 19, 2020

[​IMG]

  • Fix | Some errors have been fixed.

[​IMG]
----------, Apr 15, 2020

[​IMG]

  • New | Compatibility for pre-1.13 servers
    • Quests will only use the new API if it detects the server is running a later version.
  • New | IridiumSkyblock support
    • Code (YAML):
      iridiumskyblock:
        type
      : "iridiumskyblock_value"
        value
      : 20                             # minimum island value needed
  • New | Quests can now read quest files recursively
    • (for those who want to organise their quests into directory by categories)
  • New | You can now change how much Quests writes to console.
    • Code (YAML):
      options :
        ...
        # How much quests should log, 0 = errors only, 1 = warnings, 2 = info, 3 = debug
        verbose-logging-level
      : 2
    • 2 is the default value.
  • Fix | Some null errors / console spam may now be mitigated. Keep reporting these bugs if they still show.
  • Fix | Some timings can be adjusted now if Quests is having a considerable performance impact.
    • Code (YAML):
      options :
        ...
        performance-tweaking
      : # The following are measured in server ticks, multiply SECONDS by 20 to get the number of ticks.
          quest-completer-poll-interval
      : 100     # how frequently Quests should check if quests have been completed (def=100 - 5 seconds) - increase this value if you are struggling with performance
          quest-autosave-interval
      : 12000         # how frequently online players data will be autosaved (def=12000 - 10 minutes)
  • Fix | BentoBox island members not being included for the level task has been fixed.
    • Thank you to RodneyMKay on github for this fix.

[​IMG]
----------, Apr 15, 2020

[​IMG]

Thanks to RodneyMKay on GitHub for the following:

  • New | BentoBox skyblock support has been added

[​IMG]
----------, Feb 17, 2020

[​IMG]

Thanks to nicuch on GitHub for the following:

  • New | PlaceholderAPI
    • Supports the following:
      Code (Text):
      quests_current_quest_amount
      quests_current_quest_names
      quests_has_current_quest_<QUEST_ID>
      quests_has_completed_quest_<QUEST_ID>
      quests_has_completed_before_quest_<QUEST_ID>
      quests_cooldown_time_remaining_<QUEST_ID>
      quests_can_accept_quest_<QUEST_ID>
      quests_meets_requirements_<QUEST_ID>
    • [​IMG]
    • Further information available on wiki
  • New | Time format can now be translated
    • In config:
      Code (YAML):
      ...
      messages
      :
        time-format
      : "{hours}h {minutes}m {seconds}s"
        ...
  • New | Quests API now has more features
    • Events are now available, see here
    • See the wiki for more details
  • Fix | General internal improvements have been made

[​IMG]
----------, Jan 30, 2020

[​IMG]

Thanks to nicuch on GitHub for the following:

  • Fix | (important) Potential data loss after the 20-minute autosave has been fixed.
  • Fix | General internal improvements have been made.

[​IMG]
----------, Jan 11, 2020

[​IMG]

  • Fix | Fixed quest progress not saving for auto-start quests.

[​IMG]
----------, Jan 4, 2020

[​IMG]

  • Fix | Fishing task type exploit fixed

[​IMG]
----------, Dec 26, 2019

[​IMG]

  • New | Ways to explot the blockplace/blockplace certain task types can now be fixed
    • You can now add options to the task configs of blockbreakcertain and blockplacecertain quests which reverse task progress if a block is placed or broken.
    • See wiki for more information: blockplacecertain and blockbreakcertain

[​IMG]
----------, Dec 25, 2019

[​IMG]
  • New | Quests now natively uses the 1.14 api, so it will be compatible with 1.14 blocks.
    • This also means that it cannot be used on versions before 1.14.
    • Item IDs no longer work as a result of this.
    • You may see a lot of stone blocks as the names for a lot of items have changed to their vanilla variant. This will require manual fixing. See this list for the names (ignore LEGACY blocks).
[​IMG]
----------, Sep 13, 2019

[​IMG]
  • New | Start strings can now be added to quests
    • These will be shown to the player when they start a quest
[​IMG]
----------, Sep 2, 2019

[​IMG]
  • New | Quests can now be sorted
    • Code (YAML):
      ...
      options
      :
        ...
        # This is the relative position in the GUI
        sort-order
      : 1
[​IMG]
----------, Jul 21, 2019

[​IMG]
IMPORTANT - Please read the config changes below. You will need to convert your config to the new layout.
  • New | Config layout
    • Quests will now be represented by individual files instead of entries in the main config.
    • Each .YML file inside the new 'quests' subfolder will represent a single quest (the name must be alphanumeric as it represents the quest ID).
    • See: example file
    • See: README.txt
    • See: new directory structure
  • New | mythicmobs_killing task type (wiki)
  • Fix | ConcurrentModificationException when players quits
[​IMG]
----------, Jul 15, 2019

[​IMG]
Thanks to @ToastedCoconut for contributing the new task types and the fishing fix.
  • New | Quest autostart
    • Can be enabled by changing the following:
      Code (YAML):
      ...
      options
      :
        ...
        # Make it so players do not have to start quest themselves
        quest-autostart
      : false
      ...
  • New | expearn task type (wiki)
  • New | enchanting task type (wiki)
  • New | dealdamage task type (wiki)
  • New | breeding task type (wiki)
  • Fix | Workaround implemented for the fishing quest which should fix previous issues.
[​IMG]
----------, Jul 6, 2019

[​IMG]
  • Fix | /q category <category> and /q a opengui category <player> <category> commands have been fixed.
[​IMG]
----------, Jun 22, 2019

[​IMG]
  • Fix | A workaround for the ghost 'mining' task progresses which can be seen in certain quest progress files has been made. This should (hopefully) allow quests to be completed regardless of the ghost task progresses.
(please ignore the typo I made in the title, thanks)

[​IMG]
----------, Mar 17, 2019

[​IMG]
  • New | Quests can now have permissions.
    • This is represented in the 'options' section of each quest. The permission will be "quests.quest.<id>" where <id> is the id of the quest.
    • Code (YAML):
      questid :
        ...
        options
      :
          ...
          permission-required
      : true
  • New | Categories can now have permissions.
    • The permission will be "quests.category.<id>" where <id> is the id of the category.
    • Code (YAML):
      categoryid:
        display
      :
          ...
        permission-required
      : true
  • New | Messages and GUI items to represent these permissions. Please edit your config.
    • Code (YAML):
      messages :
        ...
        quest-start-permission
      : "&7You do not have permission to start this quest."
        quest-category-permission
      : "&7You do not have permission to view this category."
        quest-category-quest-permission
      : "&7You do not have permission to start this quest since it is in a category you do not have permission to view."
        command-quest-admin-start-failpermission
      : "&7Quest '&c{quest}&7' could not be started for player &c{player}&7. They do not have permission."
        command-quest-admin-start-failcategorypermission
      : "&7Quest '&c{quest}&7' could not be started for player &c{player}&7. They do not have permission for the category which the quest is in."
        command-quest-admin-start-failother
      : "&7Quest '&c{quest}&7' could not be started for player &c{player}&7."
        command-quest-admin-category-permission
      : "&7Category &c{category} &7 could not be opened for player &c{player}&7. They do not have permission to view it."
    • Code (YAML):
      gui :
        ...
        quest-permission-display
      :
        name
      : "&6&lNo Permission"
        lore
      :
        - "&7You do not have permission for this"
        - "&7quest (&6{quest}&7)."

[​IMG]
----------, Feb 16, 2019

[​IMG]
  • New | The startup messages where the quests register themselves can now be muted in the config.
    • Code (Text):
      ...
      options:
        ...
        # Show when quests register in console. Disable if you want less console spam at startup.
        show-quest-registrations: true
      ...
  • Fix | A bug where quests which had all tasks marked as complete would not be completed should now be fixed.
  • Fix | Titles should now work on 1.13.2
[​IMG]
----------, Feb 3, 2019

Changed the package name from me.fatpigsarefat.quests to com.leonardobishop.quests (this is fine if you are a server owner but important for developers).
  • Plugin is no longer in beta.
  • Added distancefrom task type.
  • Players can no longer start quests which they have already started (resulting in progress resetting).
  • Hopefully fixed mobkillingcertain.
  • Hopefully fixed fishing.
  • Added citizens_deliver and citizens_interact.
----------, Oct 28, 2018

  • /quests admin should actually use the permission quests.admin.
  • Quests on page 2 and above in the GUI should actually start.
----------, Aug 20, 2018

  • Brewing task type added. See the wiki for more details.
  • Can now add colour to the inventory titles.
----------, Jul 27, 2018

  • When you cancel quests it will no longer cancel immediately but give you the option to proceed or not. Some players were accidentally cancelling quests and losing all progress.
  • Fixed how servers could not disable the cancellation of quests in the config.
  • Fixed showing /quests admin help.
  • New config items:
    • Code (Text):
      gui:
        [...]
        quest-cancel-yes:
          name: "&a&lConfirm Cancel"
          lore:
          - "&7Confirm you wish to cancel"
          - "&7this quest and lose all"
          - "&7progress."
          type: "160:5"
        quest-cancel-no:
          name: "&c&lAbort Cancel"
          lore:
          - "&7Return to the quest menu."
          type: "160:14"

      options:
        [...]
        guinames:
          [...]
          quest-cancel: "Cancel Quest"
----------, Jul 25, 2018

  • Commands are made sure to be ran on the main thread.
----------, Jul 2, 2018

  • This update could possibly might have maybe fixed a bug but I don't know. I could never recreate it.
----------, Jun 24, 2018

  • You can right click quests in the GUI to cancel them.
    • New messages for those interested (put under messages: in the config):
      Code (Text):
        quest-cancel: "&7Quest &c{quest} &7cancelled!"
        quest-cancel-notstarted: "&7You have not started this quest."
       
    • New config option (put under options: in the config):
      Code (Text):
        # Allow players to cancel a quest
        allow-quest-cancel: true
----------, Jun 1, 2018

  • Play time quests have been added (contribution by @Reinatix)
  • Set up instructions are in the wiki
----------, May 11, 2018

  • An issue with errors occuring when adding a task after a quest has already been first initialized has been fixed.
  • A new "similar blocks" system has been added to the "blockbreakcertain" and "blockplacecertain" task types which allows you to ignore the orientation of blocks such as wooden doors and certain logs, because each different orientation has a seperate data code (e.g log:0 = normal log facing up, log:4 = normal log facing sideward).
    • You will have to enable this manually for each task you want this system to be active on. You can do this inside the task by setting "use-similar-blocks" to "true". See the wiki for more details.
----------, May 6, 2018

  • /quests admin moddata command has been fully complete.
    • This command allows you to modify players data.
----------, May 5, 2018

  • The Inventory task can now accept items even if their amount is above the required amount. It will only take the amount needed (if enabled).
----------, Apr 29, 2018

  • Fixed the data tag in display items for normal quests.
----------, Apr 22, 2018

  • Changed the way mobkillingcertain determines mob names. They should now use bukkit names.
----------, Apr 21, 2018

  • Added an option to hide locked quests, quests on cooldown and completed (but not repeatable) quests.
  • You may have to add this to your config so you can edit it:
  • Code (YAML):
    options :
      # Hide locked quests, quests on cooldown and completed (but not repeatable) quests
      gui-hide-locked
    : false
----------, Apr 21, 2018

  • A few internal changes which should help with performance.
  • Development has shifted over to making the Quest Creator, since it looks more fun to do.
  • Added "position" task type to justify update.
----------, Apr 21, 2018

Beta version: it may contain bugs, be unstable and/or not be optimised. If you encounter any of those issues it would be great if you could report it to me either via Discord or on the issues page on GitHub. Thanks!

Quests 2.0 is a complete redesign of the plugin. Some new systems have been added and some removed. Because of this, your old configurations will not work. This is not the full recode, due to popular request I have decided to release a beta before the recode is fully done. Below lists the simalarities and differences between the new and old system.

This beta version includes:

  • The new completely revamped configuration.
  • The new task system.
  • The new progress file system.
  • Commands (do /quests help).
  • Better, faster, quest GUI.
  • Categories, requirements, cool-downs.
  • More customization for the items in the GUI.
  • Better API.
  • At least 14 task types (can be seen at /quests admin types).
  • Update notifications.
  • bStats metrics system (just so I can see stuff about the plugin, how well it is doing etc).
  • More message customization.
Missing features from the previous version:
  • Lack of daily quest mode.
  • Lack of a few task types (previously called quest types).
  • The quest GUI designer (I'm not sure if that was even working before).
  • Lack of documentation for developers.
Again, this is a beta version. I have only been able to test this by myself and with the help of a few very kind people on Discord. Please report bugs to me, thank you. The missing features will be present when the full recode is released.

Thank you, everyone, for your previous feedback. I will continue working on this plugin thoughout the week. For help with the new configuration, I advise you check out this page.
----------, Apr 18, 2018

In this update, you'll find categories and pagination added to the plugin. Refer to the sample-config.yml for an example.
Code (Text):
categories:
  enabled: true
  gui:
    title: '&9Quests - Categories'
    slots: 27
  list:
    mining:
      display:
        item: 'IRON_PICKAXE'
        name: '&9Mining'
        lore:
         - '&7Click to view all mining'
         - '&7quests.'
      contains:
       - 'blockbreak1'
       - 'blockbreak2'
       - 'coalminer1'
       - 'logminer1'
      slot: 10
    building:
      display:
        item: 'GRASS'
        name: '&9Building'
        lore:
         - '&7Click to view all building'
         - '&7quests.'
      contains:
       - 'blockplace1'
       - 'blockplace2'
       - 'iceskater1'
      slot: 12
    combat:
      display:
        item: 'STONE_SWORD'
        name: '&9Combat'
        lore:
         - '&7Click to view all combat'
         - '&7quests.'
      contains:
       - 'playerkill1'
       - 'playerkill2'
       - 'flesheater1'
      slot: 14
    miscellaneous:
      display:
        item: 'LAVA_BUCKET'
        name: '&9Miscellaneous'
        lore:
         - '&7Click to view all miscellaneous'
         - '&7quests.'
      contains:
       - 'walking1'
       - 'walking2'
       - 'totalexperience1'
       - 'experience1'
       - 'timeplayed1'
       - 'askyblock1'
       - 'uskyblock1'
       - 'items1'
      slot: 16
----------, Oct 18, 2017

This will now be uploaded as a ZIP file, it will contain 'Quests.jar' and 'sample-config.yml'. The default config has been changed to a single-quest 'example' and the old config with all the quests will be in 'sample-config.yml' Quest IDs from the config in the JAR and the files you edit will no longer collide. You can now parse your configurations using /qparse.
----------, Oct 3, 2017

Inventory quests actually work alongside autosaving now.
Can now change how often the plugin checks each player for their items:
Code (YAML):
quest-settings:
  inventory
:
    polling-rate
: 50
exclude-non-solid-blocks in the mining and building quests actually does something now:
Code (YAML):
quest-settings:
  mining
:
    exclude-non-solid-blocks
: false
  building
:
    exclude-non-solid-blocks
: false
Source will be updated a few hours later.
----------, Sep 14, 2017

To lower disk usage, I have made a save interval option. Data files will always save on shutdown.
Code (YAML):
data:
  save-interval
: 5
----------, Aug 26, 2017

New quest types:
Code (YAML):
 'experience1':
    type
: EXP
    value
: '30'
    redoable
: false
    cooldown
:
      enabled
: true
      minutes
: 30
    display
:
      item
: 'EXP_BOTTLE'
      name
: '&9Experience Levels'
      lore
:
      - '&7Gain 30 experience levels.'
       - ''
       - '&7Rewards:'
       - '&764 Exp Bottles'
       - ''
       - '&7 %progress%/30 levels'
    rewards
:
    - 'type:command, value: [give %player% exp_bottle 64]'
    rewardstring
:
    - '&a64 Bottle o'' Enchanting.'
  'totalexperience1'
:
    type
: TOTALEXP
    value
: '1000'
    redoable
: false
    cooldown
:
      enabled
: true
      minutes
: 30
    display
:
      item
: 'EXP_BOTTLE'
      name
: '&9Total Experience'
      lore
:
      - '&7Acquire 1000 total experience.'
       - ''
       - '&7Rewards:'
       - '&764 Exp Bottles'
       - ''
       - '&7 %progress%/1000 experience'
    rewards
:
    - 'type:command, value: [give %player% exp_bottle 64]'
    rewardstring
:
    - '&a64 Bottle o'' Enchanting.'
  'walking1'
:
    type
: WALKING
    value
: '500'
    redoable
: false
    cooldown
:
      enabled
: true
      minutes
: 30
    display
:
      item
: 'LEATHER_BOOTS'
      name
: '&9Walking I'
      lore
:
      - '&7Walk 500 meters.'
       - ''
       - '&7Rewards:'
       - '&75 Swiftness II potions'
       - ''
       - '&7 %progress%/500 meters'
    rewards
:
    - 'type:command, value: [give %player% 373:8226 5]'
    rewardstring
:
    - '&a5 Swiftness II potions.'
  'walking2'
:
    type
: WALKING
    value
: '500'
    redoable
: false
    cooldown
:
      enabled
: true
      minutes
: 30
    requires
: 'walking1'
    display
:
      item
: 'IRON_BOOTS'
      name
: '&9Walking II'
      lore
:
      - '&7Walk 2000 meters.'
       - ''
       - '&7Rewards:'
       - '&720 Swiftness II potions'
       - ''
       - '&7 %progress%/2000 meters'
    rewards
:
    - 'type:command, value: [give %player% 373:8226 20]'
    rewardstring
:
    - '&a20 Swiftness II potions.'
The parse<questtype>Value methods in the QuestData class are now deprecated and have been moved to the new QuestUtil class.
----------, Aug 21, 2017

If you're not a developer you should completely ignore this but download it anyway so developers can utilize the public API.

Developers can now create their own quests, code examples will be on GitHub soon so go check there on how to create custom quests. All custom Quests should have the quest type 'CUSTOM' in the config.

The GitHub page will show you how to make a custom walking quest type and how to register a quest through code rather than the config. Here is an example of a custom quest in the config:
Code (YAML):
'walking1':
    type
: CUSTOM
    custom-type
: 'WALKING'
    value
: '100'
    redoable
: false
    cooldown
:
      enabled
: true
      minutes
: 30
    display
:
      item
: 'GRASS'
      name
: '&9Walking I'
      lore
:
      - '&7Walk 100 blocks.'
       - ''
       - '&7Rewards:'
       - '&7$500'
       - ''
       - '&7Progress
: %progress% blocks.'
       - '&7Code on how to make this quest work is'
       - '&7on GitHub!'
    rewards
:
    - 'type:command, value: [eco give %player% 500]'
    rewardstring
:
    - '&a$500 added to your in-game balance.'
You will need to create your own listener for the quest and handle the progress by yourself. If you're struggling feel free to come to me and I'll be there to help.
----------, Aug 18, 2017

New placeholder for MVdWPlaceholderAPI: {quests_complete}

A new way of selecting quests: daily random quests. By this I mean you can now have an option in the config to enable random quests. You will get 5 random quests per set amount of time (for this example it will be day) and if you don't do them you get new ones the next day.
Code (YAML):
quest-settings:
  all
:
    quest-selector-method
: RANDOM # 'RANDOM' will activate the new selection type, 'ALL' will keep it the same as before.
    random-method-refresh-rate
: 1440 #The amount of minutes you get to do the quest. Default = 1 day.
    expire-string
: '&cExpires : %time%'
New configurable messages:
Code (YAML):
messages:
  started-quest
: '&aStarted quest : %quest%'
  complete-quest
: '&aSuccessfully completed %quest%'
  rewards
: '&aYour rewards:'
  reward-string-format
: '&8 * %rewardstring%'
  sync-playtime
: '&aTo CONFIRM that you want to sync your play time FROM &2 %playtimebefore%&a TO &2%playtimeafter%&a, please repeat command &2%command%&a. Request will automatically time out in 15 seconds.'
  sync-timeout
: '&aSync request timed out.'
  sync-success
: '&aSync successful.'
  quests-refresh
: '&aYour quests have refreshed.'
----------, Aug 18, 2017

Added a new quest type: TIMEPLAYED.
Added a new command: /quest synctime.
Code (YAML):
 'timeplayed1':
    type
: TIMEPLAYED
    value
: '60'
    redoable
: false
    cooldown
:
      enabled
: true
      minutes
: 30
    display
:
      item
: 'WATCH'
      name
: '&9Time Played I'
      lore
:
      - '&7Play for 1 hour.'
       - ''
       - '&7Rewards:'
       - '&7$500'
       - ''
       - '&7Progress
: %progress%'
       - ''
       - '&7Note
: Sync your time played with the one listed'
       - '&7in Pause > Statistics by using ''/quest synctime''.'
       - '&7Requires permission ''quest.synctime'''
    rewards
:
    - 'type:command, value: [eco give %player% 500]'
    rewardstring
:
    - '&a$500 added to your in-game balance.'
/quest synctime will retrieve the player's time played from pause > statistics and use that to complete quests. It requires the permission 'quest.synctime'
----------, Aug 15, 2017

Item IDs fixed
----------, Aug 10, 2017

Each quest can now be set to only work in certain worlds.
Code (YAML):
 'logminer1':
    type
: MININGCERTAIN:17
    value
: '10'
    redoable
: false
    cooldown
:
      enabled
: true
      minutes
: 30
    worlds
:
      restricted
: true
      allowed-worlds
:
      - 'world'
    display
:
      item
: 'DIAMOND_AXE'
      name
: '&9Log Miner (world-restricted )'
      lore
:
      - '&7Mine 10 logs.'
       - ''
       - '&7Rewards:'
       - '&7$500'
       - ''
       - '&7Progress
: %progress%/10'
       - ''
       - '&cThis quest can only be done in a world called ''world''.'
    rewards
:
    - 'type:command, value: [eco give %player% 500]'
    rewardstring
:
    - '&a$500 added to your in-game balance.'
Also, you can block Quests usage entirely in a world:
Code (YAML):
blacklisted-worlds :
- 'world_nether'
----------, Aug 7, 2017

I've decided to recode a lot of the plugin to allow easier access for developers and more organisation.

There are 3 new quest types:
  • ASKYBLOCK
  • USKYBLOCK
  • MOBKILLINGCERTAIN
ASkyBlock and uSkyBlock check the player's island level and are set up like the mining and building quests.
Code (YAML):
 'askyblock1':
    type
: ASKYBLOCK
    value
: '10'
    redoable
: false
    cooldown
:
      enabled
: true
      minutes
: 30
    display
:
      item
: 'GRASS'
      name
: '&9Reach island level 10 (ASkyBlock )'
      lore
:
      - '&7Reach island level 10.'
       - ''
       - '&7Rewards:'
       - '&7$500'
       - ''
       - '&7Note
: This is for Tastybento''s ASkyBlock'
       - '&7plugin only. Quests will poll skyblock plugins'
       - '&7every 10 seconds so please wait a short while'
       - '&7after checking your island level.'
       - ''
       - '&7This quest cannot be re-done.'
    rewards
:
    - 'type:command, value: [eco give %player% 500]'
    rewardstring
:
    - '&a$500 added to your in-game balance.'
  'uskyblock1'
:
    type
: USKYBLOCK
    value
: '10'
    redoable
: false
    cooldown
:
      enabled
: true
      minutes
: 30
    display
:
      item
: 'GRASS'
      name
: '&9Reach island level 10 (uSkyBlock )'
      lore
:
      - '&7Reach island level 10.'
       - ''
       - '&7Rewards:'
       - '&7$500'
       - ''
       - '&7Note
: This is for R4zorax''s uSkyBlock'
       - '&7plugin only. Quests will poll skyblock plugins'
       - '&7every 10 seconds so please wait a short while'
       - '&7after checking your island level.'
       - ''
       - '&7This quest cannot be re-done.'
    rewards
:
    - 'type:command, value: [eco give %player% 500]'
    rewardstring
:
    - '&a$500 added to your in-game balance.'
MobkillingCertain quests are set up like MiningCertain and BuildingCertain quests.
Code (YAML):
 'flesheater1':
    type
: MOBKILLINGCERTAIN:ZOMBIE
    redoable
: true
    cooldown
:
      enabled
: true
      minutes
: 30
    value
: 10
    requires
: 'blockbreak1'
    display
:
      item
: 'ROTTEN_FLESH'
      name
: '&9Flesh Eater I'
      lore
:
      - '&7To complete this quest you must:'
       - '&7Kill 10 zombies.'
       - ''
       - '&7Rewards:'
       - '&7$800'
       - ''
       - '&7Progress
: %progress%/10 zombies killed'
    rewards
:
    - 'type:command, value: [eco give %player% 800]'
    rewardstring
:
    - '&a$800 added to your in-game balance.'
For a list of valid entities, visit the spigot javadocs:
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html

You can also change the GUI title:
Code (YAML):
gui:
  title
: '&9Quests'
And some new values to play with:
Code (YAML):
quest-settings:
  mining
:
    exclude-non=solid-blocks
: false
  building
:
    exclude-non=solid-blocks
: false
----------, Aug 7, 2017

A fix for Inventory quests. I think.
----------, Jul 24, 2017

Inventory debug messages - not an important update.
----------, Jul 20, 2017

GLOWING_REDSTONE_ORE is now the same as REDSTONE_ORE and /quests debug for MINING(CERTAIN) quests
----------, Jul 17, 2017

1.12 support for titles.
----------, Jun 14, 2017

You can now change the Quest GUI size.
The enchantment name for selected quests (Infinity X) is now hidden.
Note: the enchantment name will only hide on 1.8 and above.
Note: having items set in slots outside the maximum Quest GUI size will result in the plugin breaking! (it's common sense)
----------, May 9, 2017

You can now have it say the rewards upon quest completion.
In each quest add:
Code (Text):
    rewardstring:
     - '&a$500 added to your in-game balance.'
Code (Text):
  'blockbreak1':
    type: MINING
    redoable: true
    cooldown:
      enabled: true
      minutes: 30
    value: 10
    display:
      item: 'WOOD_PICKAXE'
      name: '&9Block Break I'
      lore:
       - '&7To complete this quest you must:'
       - '&7Mine 10 of any block'
       - ''
       - '&7Rewards:'
       - '&7$500'
       - ''
       - '&7Progress: %progress%/10 blocks'
    rewards:
     - 'type:command, value:[eco give %player% 500]'
    rewardstring:
     - '&a$500 added to your in-game balance.'
This can be disabled:
Code (Text):
show-rewardstring: true
A new placeholder has been added for titles: %rewardstring%
It will be replaced with the reward string set in the config.
[​IMG]
----------, Apr 17, 2017

Bugfix
----------, Apr 2, 2017

The update that absolutely nobody asked for!
[​IMG]
To get started use /qgui.​
----------, Apr 2, 2017

Nothing special - just notifies you if you messed up the config
----------, Mar 28, 2017

WorldGuard fix
----------, Feb 23, 2017

Versions with titles disabled due to NMS incompatibility will now work without titles.

Inventory quests added (as promised, @Reinatix not lying am I now? -.-)
Code (YAML):
type : INVENTORY
value
: ' [PORK:40, RAW_BEEF:40 ]' #[ITEM_1_NAME:AMOUNT, ITEM_2_NAME:AMOUNT, etc]
Quest creator being worked on.
----------, Feb 22, 2017

Compatibility for older 1.8 versions.

Inventory quests not out yet. Sorry... next version I promise. :/

Source code now on GitHub: https://github.com/fatpigsarefat/Quests
----------, Feb 22, 2017

  • Small bugfix
  • Work started on Inventory quests
----------, Jan 29, 2017

1.11 users should now be able to complete quests.
----------, Jan 28, 2017

Bugfix
----------, Dec 24, 2016

For people who have already installed the plugin:
To add a cooldown to your quest, add:
Code (YAML):
   cooldown:
      enabled
: true
      minutes
: 30
after the 'redoable' section. To change the cooldown time, edit the 'minutes'.

A quest should now look like this:
Code (YAML):
 'iceskater1':
    type
: BUILDINGCERTAIN:79
    redoable
: true
    cooldown
:
      enabled
: true
      minutes
: 30
    value
: 10
    display
:
      item
: 'ICE'
      name
: '&9Ice Skater I'
      lore
:
      - '&7To complete this quest you must:'
       - '&7Place 10 of ICE [79 ]'
       - ''
       - '&7Rewards:'
       - '&7$5000'
       - ''
       - '&7Progress
: %progress%/10 blocks'
    rewards
:
    - 'type:command, value: [eco give %player% 5000]'
In addition to all of this, you can edit the locked and completed items in the GUI:
Code (YAML):
gui:
  completed
:
    item
: 'STAINED_GLASS_PANE:5'
    name
: '&2&lCompleted'
    lore
:
    - '&7This quest has been completed and is not redoable.'
  cooldown
:
    item
: 'STAINED_GLASS_PANE:1'
    name
: '&6&lCooldown'
    lore
:
    - '&7This quest has been completed.'
     - '&7Cooldown
: %cooldown%'
  locked
:
    item
: 'STAINED_GLASS_PANE:14'
    name
: '&c&lLocked'
    lore
:
    - '&7This quest is locked.'
     - '&7Please complete previous quests to unlock this quest.'  
----------, Oct 19, 2016

- Certain block type quests released (MININGCERTAIN, BUILDINGCERTAIN)
- Changed "completed" item to something that stands out more

Planned:
- Mob CERTAIN quest
----------, Jul 25, 2016

Title support has been added to Quests

Planned & working on:
- Certain block/mob type quests
----------, Jul 24, 2016

  • Fixed a small bug with a gui.
ElSheriff for reporting the bug & also helping to fix
----------, May 24, 2016

Resource Information
Author:
----------
Total Downloads: 81,407
First Release: May 23, 2016
Last Update: Aug 28, 2024
Category: ---------------
All-Time Rating:
262 ratings
Find more info at github.com...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings