Compatible with Minecraft 1.18 - 26.3
Rank icons can now show the exact date and time a player passed them.
📅 Date a Rank Was Passed
New {completed-at} placeholder for rank lore. Drop it into lore-completed in ranks.yml and passed ranks show when the player finished them:
lore-completed:
- "{status}"
- "&7Passed on: &f{completed-at}"
- The time is saved when the rank is claimed, or when an admin moves a player past it
- Moving a player back onto a rank clears its time, since they haven't passed it anymore
- Players who passed a rank before this update show
unknowninstead. Change that word withrank.completed-at-unknownin your language file - Saved in your database too, so it survives restarts and matches across a network
🕒 Date Style
Two new options under gui in config.yml:
date-formatdefaults todd/MM/yyyy HH:mm. UseMM/dd/yyyy hh:mm afor a format like10/10/2026 06:34 PMtime-zoneis empty for the server clock, or set one likeEurope/Paris
A wrong value gives a short console warning and falls back to the default.
🔧 Fix
The help comments about rank permissions in config.yml and ranks.yml said opposite things. They now agree.
📦 Upgrading
Drop in the jar and restart. config.yml and the language files update themselves, so there's no need to delete them.
Read the documentation | Join the Discord
Enjoying the plugin? A ⭐ review goes a long way!
Compatible with Minecraft 1.18 - 26.3
Seven new kinds of quests, ranks and progress shared across a whole network, and a Spanish translation.
🎯 New Quest Types
| Type | What the player does |
COOK |
Cook food in a furnace, smoker or campfire. Only food counts |
SMELT |
Smelt things that are not food: iron, glass, bricks and the rest |
COOK_OR_SMELT |
Both at once, the same as the old SMELT_ITEM, which still works |
KILL_PLAYER |
Kill real players. unique-players: true counts each player once, and NPCs never count |
ENCHANT |
Enchant at a table, optionally a certain item or enchantment. The menu says "with Sharpness" |
ANVIL |
Rename, repair or combine on an anvil, counted only when the result is really taken |
WALK / TRAVEL |
Cover a number of blocks. TRAVEL also counts boats, horses, minecarts and elytra |
EXPLORE |
Find biomes, structures like villages and temples, or areas you define yourself |
Kill quests can also ask for a weapon, either by material with weapon: DIAMOND_SWORD or by name with weapon-name: "Demon Blade". Bows, crossbows and tridents count as the item they were fired from.
🌐 Shared Ranks Across a Network
Player data can live in a database now, so every server on a BungeeCord or Velocity network sees the same rank and quest progress, and players can switch servers mid quest.
| Type | For |
YAML |
One server. The default, same files as before |
SQLITE, H2 |
One server, in a single database file |
MYSQL, MARIADB, MONGODB |
A whole network, shared |
- Rewards are paid once and only once, even if two servers notice the same quest or claim at the same moment
- Redis or RabbitMQ gives instant sync. Without either, servers still catch up every second
- If the database is down the plugin stops with a clear message rather than starting on empty data
- Moving between any two types is a config change: set the new
type, turn onmigration.migrate-data, restart. The old data is kept as a backup
It all lives in the new storage.yml, with every line explained.
Find out more about how this works here: greenarrowlol.github.io/zQuestRank
🌍 Spanish
A new lang/es.yml ships with the plugin. Set language: es in config.yml to use it.
📦 Upgrading
Stop the server, swap in the new jar, start it again. Your config and language files update themselves, a new storage.yml is created on the default YAML type, and every player keeps their rank and progress. ranks.yml is never rewritten.
Read the documentation | Join the Discord
Enjoying the plugin? A ⭐ review goes a long way!
Compatible with Minecraft 1.18 - 26.3
Three new quest types, one quest can target many things at once, ranks can hold as many quests as you like, and TowerTrials is connected.
🧱 Three New Quest Types
PLACE_BLOCK counts blocks put down in the world. Every spot counts once, so breaking a block and placing it back on the same square gives nothing, while a fresh square counts. That is progression.anti-replace-cheese, on by default.
SMELT_ITEM counts cooking in furnaces, blast furnaces, smokers and campfires. Set output for what comes out, and optionally input for what has to go in.
FIND_HEAD is a head treasure hunt. Hide player heads around the world, players right-click them to collect, and each head counts once per player. The heads live in a new heads.yml, named by texture value, URL, hash or a real player's name, and a quest can use the whole file, a chosen few, or any head in the world.
Read more here: greenarrowlol.github.io/zQuestRank
🎯 One Quest, Many Targets
A quest used to name one block or one mob, so "break any log" meant a quest per wood type. Now it takes a list, a game tag, or a modded id:
material: DIRT # one, as before
materials: [DIRT, GRASS_BLOCK] # a list
material: "#minecraft:logs" # a game tag, every log type
material: itemsadder:myitems:ruby_ore # an ItemsAdder block or item
Any tag the game knows works, like #minecraft:coal_ores or #minecraft:fishes. A wrong tag is skipped with a console line and the rest of the quest still loads.KILL_MOB does the same with entities: [ZOMBIE, HUSK, DROWNED], and takes custom mobs too: mythicmobs:SkeletonKing or itemsadder:namespace:id.
ItemsAdder blocks only count for an itemsadder: entry. The vanilla block underneath a custom ore never counts for the vanilla material, so custom blocks cannot be farmed as note blocks.
📖 Unlimited Quests Per Rank
A rank used to show only as many quests as there were slots in the menu. Now it pages on its own, with arrows either side of the claim button that appear only when there is more than one page. Delivering and claiming work the same on every page, and the menu stays where you were.
Slots are gui.quest-previous-page-slot and gui.quest-next-page-slot in config.yml, and -1 hides an arrow.
🌍 World Filters
Any quest can be limited to certain worlds with worlds: [island_world], and anything done elsewhere is ignored. Put the list on a rank instead and it covers every quest of that rank that has no list of its own. Filtered quests show a small "Only counts in" line in the menu.
🗼 TowerTrials Support
Tower progress is read straight from TowerTrials now, no placeholders in between.
- TOWER_FLOOR asks for a given floor of a given tower. The menu shows their highest cleared floor out of it, and a floor cleared before the quest existed already counts
- TOWER_CLEAR counts floors as they are cleared, across every tower or just one, with
first-clear: trueso nobody farms the same floor - Rank requirements take the same two, alongside money and playtime, and show on the claim button with their current number
- Floor gates in
config.ymlclose a floor and everything above it until the party leader holds a rank, with your own message
TowerTrials is optional. Without it the plugin runs exactly as before, tower quests just never fill.
🎨 Custom Lore on Rank Icons
Every rank icon showed the same three lines with no way to add your own, so listing a rank's rewards was not possible. Each rank in ranks.yml can now carry its own text, one list per state: lore while it is the current rank, lore-locked while it is locked, and lore-completed once passed.
lore:
- "{status}"
- "&7Quests: &e{completed}&7/&e{total}"
- ""
- "&dREWARDS"
- " &7- &f5x Diamond"
- "&eClick to view your quests!"
{status}, {completed}, {total} and {rank} all work, plus colours, hex and PlaceholderAPI. Your lore replaces the normal lines rather than adding to them, and a rank with no lore looks exactly as it did.
🔧 Fixes
- An admin with a wildcard permission was thrown onto the highest rank the moment they opened the menu, since the wildcard answers yes to every rank node. Wildcard holders are now left where they are. There is also
progression.permission-ranksto ignore rank nodes for everyone - Cooking now counts the moment each item finishes, so nobody has to stand at the furnace. Credit goes to whoever loaded the raw items by hand, hopper fed items count for nobody, and items taken back out before they cook are dropped from the tally.
progression.smelt-counts-when: collectedbrings back counting on pickup - Items already sitting cooked in a furnace no longer count when picked up, so an old furnace cannot finish a quest in one click
- Placements that another plugin cancels and redoes itself, common on island and custom block plugins, count now if the block really stayed in the world
- MythicMobs kills that the mob does not credit, like kills through skills, fall back to whoever landed the hit
general.debug: trueprints one line for every action that did not count, saying exactly why: wrong rank, wrong world, wrong block, or already done
📦 Upgrading
Stop the server, swap in the new jar, start it again. The new config.yml keys and language lines merge into your files on their own and your values stay, heads.yml is created on first start, and your ranks.yml is never touched.
📋 Version Breakdown
| Version | Focus |
1.4.4 |
Custom lore per rank icon, with a separate list for current, locked and completed. |
1.4.3 |
Cooking counts as each item finishes rather than on pickup, with a setting to keep the old way. |
1.4.2 |
Already cooked items stop counting, and TowerTrials quests, requirements and floor gates arrive. |
1.4.1 |
Partial furnace take-outs, redone block placements and uncredited MythicMobs kills all count, plus the debug lines. |
1.4.0 |
PLACE_BLOCK, SMELT_ITEM and FIND_HEAD, many targets per quest, world filters, paged quest menus and the wildcard rank fix. |
Read the documentation | Join the Discord
Enjoying the plugin? A ⭐ review goes a long way!
Compatible with Minecraft 1.18 - 26.2
A new permission lets staff open any rank's quest menu, so you can check a rank is set up right without putting yourself on it.
👁 Open Any Rank's Quests
Clicking a rank you are not on used to do nothing useful. A locked rank told you to finish your current one first, and a rank you had passed told you it was done. Fine for players, awkward when you just want to check Rank 5's quests and icons came out right.
The new zquestrank.viewall permission opens every rank in the /rank menu, locked and finished alike. Operators have it by default, and you can hand it to your staff through your permission plugin.
Normal players see no change at all. Their menu behaves exactly as it did before.
🔍 What You See In Preview
- An extra line on every rank you are not on, telling you it can be opened for a look
- The full quest menu of that rank, with its icons, objectives, info item and claim button
- A note on the info item and the claim button making clear this is a look only, not your own progress
- Quests always show as fresh, on purpose. The progress saved against you belongs to the rank you are really on, so showing it under another rank would give you wrong numbers
- The requirement list is checked against you for real, which is the useful part. You can see straight away whether a money line, a playtime line or a placeholder line is written correctly, without setting yourself to that rank
- Nothing can be claimed or delivered from that view. Clicking the claim button or a delivery quest tells you it is a preview. Nothing leaves your inventory and no rank is given
💬 New Wording
Three new lines under rank in your language file, added automatically on this update with your own edits kept:
click-previewthe line in the rank menupreview-notethe look-only line inside the quest menupreview-onlythe chat line when you click claim or a delivery there
📦 Install
Stop the server, replace the old jar in plugins/ with zQuestRank-1.3.4.jar, and start it again. New keys are added to your files automatically and your own edits are left alone.
Read the documentation | Join the Discord
Enjoying the plugin? A ⭐ review goes a long way!
Compatible with Minecraft 1.18 - 26.2
Decoration items in the rank menu, per-page and per-rank menu text, new ranks that unlock by themselves, and an updater that never touches your edits again.
🛡 Your Config Edits Are Safe
Updating the plugin used to cost you work. Keys you had added yourself were dropped, and keys you had written in a different shape to the defaults were replaced. Anyone using a per-page arrow map or a custom menu title had it reset on every update.
From this build the updater can only add. New keys from a newer version still land in your files with their comments, at the right place. Anything already in your file stays exactly as you wrote it, in whatever shape you wrote it, including your own extra keys and notes.
There is now a safety net as well. Whenever an update is about to change config.yml or a language file, the old file is copied to plugins/zQuestRank/backups/ first, named after the version it came from, such as config.yml.9.bak. Nothing is copied on a plain restart, only on a real update.
🖼 Decoration Items
You can now place any item you like in the /rank menu purely as decoration. Give it a name and as many lines of text as you want, and it just sits there. It opens nothing, says nothing, and clicking it does nothing at all. Use it for a title across the top, an explanation of how ranking up works, server information, or a row of glass to separate sections.
gui:
decorations:
- slots: [4]
page: all
icon: OAK_SIGN
name: "&6&lServer Ranks"
lore:
- "&7Complete the quests of your"
- "&7current rank to move up."
- ""
- "&eYou are &f%zquestrank_rank_name%"
- slots which slots it fills, counting from 0 at the top left, left to right. List several and the same item is drawn in each. A single
slot: 4works too - page or pages which page it shows on. Use
page: 2,pages: [1, 3], orpage: all - icon a plain material, a material with model data (
OAK_SIGN:1234), or an ItemsAdder item - name and lore with
&and&#rrggbbcolours, PlaceholderAPI placeholders, and ItemsAdder images. Leave the name out for a nameless filler
Write them as a list or as named blocks, whichever you find easier to keep tidy. On start the console prints how many decorations it loaded, and warns you if two sit on the same slot of the same page or if a slot falls outside the menu.
Two things to know. Decorations are drawn over the ranks, so in auto menu mode a decoration will cover whichever rank lands on that slot. Either place decorations after the last rank or switch to manual mode and leave gaps for them. The page arrows are always drawn last, so you can never hide them and get stuck on a page.
🆙 New Ranks Unlock By Themselves
A player who has claimed the last rank in ranks.yml sits at the top of the ladder with nothing left to do. The day you add another rank and reload, every one of those players picks it up on their own:
- The new rank's
on-reachcommands run for them, so their permission group follows - They get a chat line telling them a new rank is out, configurable as
rank.new-rank-available - An open menu redraws on the spot
Online players get it within a few seconds of the reload, everyone else the next time they join. No manual command for anyone, however many players are waiting at the top.
Players are also no longer pulled backwards. The plugin now remembers which rank a player actually claimed, so still holding the permission group of a finished rank cannot drag them back onto it with their quests reset. Demoting someone on purpose still works exactly as before.
🎨 ItemsAdder Images Everywhere
An ItemsAdder image inside a rank name now renders as a picture in every place the plugin writes that name, chat included. The promotion message, the broadcast everyone sees, and the quest messages all show it properly, and the broadcast is sent to each player individually so it renders for all of them.
Both ways of writing an image work everywhere, in menus and in chat: %img_yourimage% through PlaceholderAPI, and ItemsAdder's own :yourimage:, which works even without PlaceholderAPI. Console lines stay as plain text.
✏️ Menu Text You Control
Page arrows can say something different on each page. menu.previous-page and menu.next-page stay the general text, and adding the page number targets one page. Arrows can carry lore lines now too, general or per page.
menu:
next-page: "&eNext page"
next-page-1: "&eOn to the high ranks"
previous-page-2: "&eBack to the first ranks"
next-page-lore-1:
- "&7Ranks IV to VI"
The quest menu can have a title per rank. menu.quest-title stays the general one, and a rank can override it by position (quest-title-1) or by its key (quest-title-vip). If a rank has both, the one by name wins, and ranks you do not list keep the general title.
You can force a page count. The next-page arrow only appears while there is a page after the current one, so it hides on your last page. Set gui.rank-menu-pages to keep it working past the end, useful when the next batch of ranks is still being written. Leave it at 0 to count pages from ranks.yml as before. A decoration placed on a later page also counts as a page on its own.
📈 Metrics
zQuestRank now reports anonymous usage stats: server version, player count and plugin version, nothing about your players. It runs on a background thread and never touches the main one. To turn it off, set enabled: false in plugins/ArrowStats/config.yml.
🧪 Compatibility
Minecraft 1.18 and newer. Plain Spigot is fine, Paper is not required. Everything works on Spigot: menus, quests, requirements, rewards, Vault, PlaceholderAPI, ItemsAdder and permission commands. The one thing Paper adds is item and mob names following each player's own game language, so on Spigot those names show in English.
📝 Upgrade Notes
Stop the server, replace the old jar in plugins/ with zQuestRank-1.3.3.jar, and start it again. New keys are added to your files automatically and your own edits are left alone.
If an earlier update reset your settings, this is the build to set them up on for the last time. Put your decorations and per-page arrows back once here and they will ride through every future update. Keep a copy of your config and language files before you swap the jar, as you always should, and check plugins/zQuestRank/backups/ afterwards.
One config gotcha worth knowing: the default file ships with an empty decorations: [] in the example. If you add your own decorations above it and leave that line in, YAML sees the key twice and the empty one wins, so nothing shows. Delete decorations: [] when you start using decorations.
📋 Version Breakdown
| Version | Focus |
1.3.3 |
Settings you had written in your own shape (decorations as named blocks, per-page arrow maps) are no longer replaced by the defaults on update, and your files are backed up before any update touches them. ItemsAdder images now render in chat messages as well as menus, and :yourimage: works alongside %img_...% everywhere. |
1.3.2 |
Keys you added yourself are no longer deleted on update. Players sitting on the last rank pick up a newly added rank automatically, and a permission group from a finished rank can no longer pull them backwards. Added gui.rank-menu-pages to force a page count. |
1.3.1 |
Decorations can be written as named blocks as well as a list, span several pages with pages:, and report load counts and slot clashes in the console. Added per-page text and lore on the page arrows, and a per-rank title for the quest menu. |
1.3.0 |
Introduced decoration items: any item in any slot of the rank menu, with a name and lore, that does nothing when clicked. |
Join the Discord
Enjoying the plugin? A ⭐ review goes a long way!
Purchase a copy now
Server type
Supported versions
Share and earn!
Share and earn part of the profits, an estimated €1.4 per product sale.
Log in to get your link