The command experience got a serious glow-up, NPC quest givers behave the way you'd expect, and a whole stack of bugs are gone.
✨ The good stuff
⌨️ The command-hint bar has been polished:
- It tells you what comes next again -
[Quest Name],[amount], or<option>for sub-commands - instead of a useless[...]. - It sticks around when you pause instead of flickering away, and echoes what you're typing as you go.
- Number arguments are colorful again. ✨
🔖 New: /qa tags check <tag> [--player] - peek at a tag's current value (reputation, flags, whatever) without having to remember its type. Perfect for debugging your tag setups.
✦ FancyNPCs quest givers now sparkle. FancyNPCs with a quest attached finally show the floating quest-giver particle above their head, just like Citizens NPCs and armor stands do.
🤝 Smoother NPC setup. Attaching quests and conversations to NPCs now works exactly as documented - type citizens:0 / fancynpcs:<id> and it attaches to that NPC, or use rightClickSelect (now suggested in tab-completion, for both quests and conversations) to just click the NPC in-game.
🐛 Fixes
- "You don't meet the requirements" actually shows up now when you try to accept a quest you can't take - from an NPC, an armor stand, or the menu. Before, the menu just silently closed
- No more "Confirm Command Execution" popup when clicking conversation options or the chat
[CHOOSE]/[ACCEPT]buttons. Actionrewards work again -/qa edit <quest> rewards add Action …no longer errors out./qa edit <quest> npcs listis readable - it showscitizens:0/fancynpcs:<id>instead of a wall of internal gibberish.- The Citizens quest-giver particle disappears when you clear the quest from an NPC (it used to linger forever).
/qa progressformatting has been fixed
🔌 Integrations
- FancyNPCs updated from 2.10.0 to 2.10.1.
🛠️ Under the hood
- The command system now runs on Paper's native Brigadier - we no longer use LegacyPaperCommandManager
This release adds FancyNPCs support and a cow-milking objective, makes saving quest data a lot safer, brings every plugin integration up to its latest version, and fixes a long list of gameplay bugs.
✨ New features
- FancyNPCs support: FancyNPCs is now supported, alongside Citizens and armor stands.
- New
MilkCowobjective. Counts cows milked (detected by right-clicking a cow with an empty bucket), mirroring the Shear Sheep objective with an optional cancel flag.
🛡️ Reliability & data safety
- No more lost quest progress on a failed save. Player data is now saved inside a single database transaction, so a mid-save failure (full disk, lock timeout, dropped connection) rolls back cleanly instead of deleting data it cannot re-write.
- Thread-safety fixes around the online-player registry, a player's completed/failed/pending quest lists, quest tags (setting a tag to nothing now removes it), and conversation chat history - preventing rare crashes and data corruption.
- Visual effects on the main thread. Armor-stand quest-giver particles and the quest/objective completion title + sound now always run on the main thread, where Paper requires them.
🐛 Bug Fixes
- Non-OP players can use
/notquestsagain. Itsnotquests.usepermission (default on) was never registered on Paper, so non-operators got "Unknown command". The admin commands (/nqa,/qa) still require operator /notquests.admin. - Tab-completing a mob/entity argument (for
KillMobs,SpawnMob, …) no longer throws an error and shows suggestions again. - Killing an EcoMob now counts towards a matching
KillMobsobjective (the kill was never detected before). - "Reach job level" objectives now track your real Jobs level, including admin changes like
/jobs level add, and complete once you reach the target level. - Attaching a quest to an armor stand works again - the "add" item did nothing before. Right-click the armor stand with it.
- Quest previews from armor stand / FancyNPCs quest givers no longer error out, and the NPC quest-list GUI shows its proper title instead of "Language string not found".
🔌 Integration updates
Every supported plugin integration is now on its latest version (old → new):
- Citizens 2.0.30 → 2.0.42 (escort-NPC following moved to the new Citizens API)
- PlaceholderAPI 2.11.5 → 2.12.2
- MythicMobs 5.3.0 → 5.12.1
- EliteMobs 9.1.9 → 10.4.0
- WorldEdit 7.3.0 → 7.4.3
- LuckPerms 5.4 → 5.5
- Towny 0.98.4.4 → 0.103.0.0
- Jobs Reborn 4.17.2 → 5.2.6.5
- Floodgate 2.2.2 → 2.2.5
- eco 6.38.3 → 7.6.3
- EcoBosses 8.78.0 → EcoMobs 11.7.0 (the developer renamed EcoBosses to EcoMobs; existing eco-mob spawn actions keep working)
- Vault (1.7.1) and Slimefun (RC-37) were already current.
Nothing changes in how you use these - the plugin installed on your server is still what runs.
🧩 Dependency upgrades
- Adventure 4.18.0 → 4.26.1 (kept on the 4.x line to match Paper 26)
- commons-io 2.11.0 → 2.22.0
- PacketEvents 2.12.0 → 2.12.2
- geantyref 1.3.13 → 1.3.16
- Configurate 4.1.2 → 4.2.0
- Lombok 1.18.44 → 1.18.46
- SQLite 3.53.1.0 → 3.53.2.0
- Paper dev bundle build 64 → 69
- Shadow 9.4.1 → 9.4.2
- Gradle 9.0.0 → 9.5.1
🗑️ Removed
- UltimateJobs - no longer maintained; its integration and "reach job level" objective were removed. Jobs Reborn still covers job objectives.
- Leftover ZNPCs and BetonQuest references that were no longer used.
🛠️ Under the hood
- More reliable builds. Every plugin integration is bundled with the project as a local file instead of being downloaded from a third-party repository at build time, so a relocated/offline repo can no longer break a build.
✅ Compatibility
Built for Paper 26.1.2 and Java 25.
This release brings NotQuests up to the latest Paper version, refreshes all translations, and fixes a handful of annoying command bugs.
🧩 Dependency upgrades
- Updated to Minecraft / Paper 26.1.2.
- Newer InvUI 2.1.0 (the GUI library) and HikariCP 7.0.2 (database pooling).
🐛 Bug Fixes
- Tab-completing a boolean condition (like
Climbing,Flying, orActiveQuests) under/qa conditions addno longer crashes. /qa conditions addno longer rejects valid input with "Invalid syntax", so you can actually create those conditions now./nq abortworks again instead of throwing an error, including when you have no active quests./nq abort,/nq progress,/qa failQuest, and/qa completeQuestno longer get blocked by a bogus "accepting/previewing is disabled" message when the quest preview GUI is turned on.
🌍 Translations
- All 31 languages are back in sync with English. Outdated and renamed entries were cleaned up, and missing lines were filled in, while existing translations were left untouched.
🛠️ Refactors
- Reworked, nicer demo conversation. (
/qa conversations create namehere --demo)
This is a backport for paper 1.21.11
Breaking Changes
- Paper 1.21.1 is now supported
- Java 21 is now required (previously Java 17)
- Removed integrations: BetonQuest, zNPCs, and ProjectKorra have been temporarily removed to keep notquests simple and easier to maintain. If you relied on BetonQuest conditions/events, zNPCs NPC linking, or ProjectKorra objectives, these are no longer available.
New Features
Custom YAML-based GUIs
- The entire GUI system has been rewritten with a new YAML-driven GUI framework
- GUIs are now fully configurable via YAML files in the
plugins/NotQuests/guis/folder - Supports tabbed interfaces, paged item lists, and action buttons
- Default GUIs included: main menu with tabs (active quests / take quests), quest preview, NPC quest selection, category browsing, and quest abort confirmation
- Custom skull textures, dynamic placeholders (
%QUESTNAME%,%CATEGORYNAME%,%PLAYER%, etc.), and per-item lore/display name from the language file - Powered by InvUI
Breaking Changes
- Paper 26.1.1 is now supported. Older versions are no longer supported
- Java 25 is now required (previously Java 17)
- Removed integrations: BetonQuest, zNPCs, and ProjectKorra have been temporarily removed to keep notquests simple and easier to maintain. If you relied on BetonQuest conditions/events, zNPCs NPC linking, or ProjectKorra objectives, these are no longer available.
New Features
Custom YAML-based GUIs
- The entire GUI system has been rewritten with a new YAML-driven GUI framework
- GUIs are now fully configurable via YAML files in the
plugins/NotQuests/guis/folder - Supports tabbed interfaces, paged item lists, and action buttons
- Default GUIs included: main menu with tabs (active quests / take quests), quest preview, NPC quest selection, category browsing, and quest abort confirmation
- Custom skull textures, dynamic placeholders (
%QUESTNAME%,%CATEGORYNAME%,%PLAYER%, etc.), and per-item lore/display name from the language file - Powered by InvUI 2.0
- [+] Support paper 1.21.1
- [!] Remove unused dependencies. This reduces the size of notquests from 6.5 MB to 3.4 MB
- [!] Fix creation and saving of quest profiles not working (/nq profiles)
- [^] Upgrade various dependencies of notquests: betonquest, citizens, elitemobs, projectkorra, uclans, znpcs, floodgate, placeholderapi, crunch, hikaricp
- [@] Update various translations
- [+] Support paper 1.20.6
- [!] Disable UltimateClans support, as their maven repository for v5 has been deleted
- [+] Support mythicmobs factions in killmobs objective (mmfaction:yourfactionname)
- [!] Attempt to fix db issues
- [!] fixed sqlite locking issues by limiting its max. connection pool size to 1.
- [+] Update to Paper 1.20
- [+] Update Citizens API so it supports the latest version
- [+] Support Minecraft 1.19.4 (Thanks to @BakaAless )
- [+] Drop Spigot support completely. This reduces the jar size!
- [+] Add AND and OR to boolean conditions (Thanks to @BakaAless )
- [^] return warning when using /qa editor command
- [!] Prevent unnecessary quest saves during plugin load. This should increase the load speed of NotQuests, especially if you have many Quests
- [!] fix OtherQuest objective task description not displaying the displayname of the other Quest
- [!] fix typo in Quest chat preview
- [!] fix conversation focus distance check erroring when player is in different worlds
- [!] fix QuestOnCooldown variable not working
- [@] Update a bunch of translations
-
[+] New objective: Enchant
-
[+] For conversations: Add random line possibility (Thanks to @BakaAless ). Instead of just "text:", you can now specify "texts:" as a string list inside of conversations. Showcase: https://github.com/AlessioGr/NotQuests/pull/189
-
[^] Update all kinds of dependencies
-
[^] Stop a moving Citizens NPC when in a conversation (Thanks to @BakaAless ). Showcase: https://github.com/AlessioGr/NotQuests/pull/188
-
[^] Allow minimessage format on quest-giver-npc-indicator-above-name (Thanks to @TheZexquex )
-
[^] Ability to check objective unlock conditions for:
- every time an action is run for a player (default: on)
- every X seconds (default: off)
This also fixes some faulty logic with repeating tasks. Stuff like condition objectives were checked too quickly/often if multiple players are online
-
[!] Fix quest giver hologram armorstand not getting destroyed when despawning npc (Thanks to @TheZexquex )
-
[!] Fix armor being visible in armor slots after completing DeliverItems objective (Thanks to @TheZexquex )
- [!] Finally fix lang tags being invisible inside custom gradient tags if they are not wrapped in a solid color. This removes the hard-coded blue color for translated material names and thus allows for more customization.
- [+] Better conversations: Conversation Focus! Thanks @BakaAless for adding this feature
- [!] Fix errors when a condition is executed from an async thread
- [^] updated BQ integration interceptor to work with the latest version
- [+] Now you can finally customize the category GUI items (default is chest) using /qa categories edit categoryname guiItem ...
- maxAccepts => limits.accept, limits.complete, limits.fail. maxAccepts did not make sense, as it counted the completions and not the accepts
- New variables: QuestReachedMaxCompletions and QuestReachedMaxFails
- /qa edit questname acceptCooldown complete ...

