zQuestRank | Quest-Based Ranks 1.6.0

Quest-based rank progression: finish per-rank quests, meet requirements, claim the rank and rewards.

Hold Shift and click to select a range

Latest
View

Compatible with Minecraft 1.18 - 26.3

zQuestRank v1.6.0
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 unknown instead. Change that word with rank.completed-at-unknown in 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-format defaults to dd/MM/yyyy HH:mm. Use MM/dd/yyyy hh:mm a for a format like 10/10/2026 06:34 PM
  • time-zone is empty for the server clock, or set one like Europe/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.


Need help or found a bug? Join the Discord.
Read the documentation | Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
0
No ratings yet
Purchase Required

View

Compatible with Minecraft 1.18 - 26.3

zQuestRank v1.5.0
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 on migration.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.


Need help or found a bug? Join the Discord.
Read the documentation | Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
0
No ratings yet
Purchase Required

View

Compatible with Minecraft 1.18 - 26.3

zQuestRank v1.4.4
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: true so 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.yml close 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-ranks to 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: collected brings 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: true prints 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.

Need help or found a bug? Join the Discord.
Read the documentation | Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
0
No ratings yet
Purchase Required

View

Compatible with Minecraft 1.18 - 26.2

zQuestRank v1.3.4
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-preview the line in the rank menu
  • preview-note the look-only line inside the quest menu
  • preview-only the 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.


Need help or found a bug? Join the Discord.
Read the documentation | Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
0
No ratings yet
Purchase Required

View

Compatible with Minecraft 1.18 - 26.2

zQuestRank v1.3.3
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: 4 works too
  • page or pages which page it shows on. Use page: 2, pages: [1, 3], or page: all
  • icon a plain material, a material with model data (OAK_SIGN:1234), or an ItemsAdder item
  • name and lore with & and &#rrggbb colours, 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-reach commands 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.

Need help or found a bug? Join the Discord.
Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
1
No ratings yet
Purchase Required

View

Compatible with Minecraft 1.18 - 26.2

Initial release
1
(1)
Purchase Required
zArrowTan
zArrowTan Author of this product
€16.99 EUR

Purchase a copy now

Add to Wishlist
Product Info
274 Views
1 Purchases
2 Downloads
801.45 KB File size
21.07.2026 Published
25.10.2026 Updated

Share and earn!

Share and earn part of the profits, an estimated €1.4 per product sale.

Log in to get your link