Carousel Demo video
ScrollQuest
A physical quest system with randomized missions, 5 rarity tiers, and custom rewards
Made with ❤ by zArrowTan, part of the Modern Plugin Series.
Overview
ScrollQuest reinvents the quest system by handing players physical paper scrolls that hold randomized missions. Each quest is a real, tradeable item with its own objective, rarity, and rewards. Players collect them, track progress in real time, and right-click to claim, making quests feel tangible and valuable instead of buried in a menu. No database, no setup, just drop it in.
▶ Showcase
Physical Quest System
5 Rarity Tiers
12 Mission Types
Flexible Reward System
Progress Tracking
Full Localization
🛡 Anti-Exploit Protection
Quest Expiration System
Resource Pack Support
⚙ Advanced Configuration
Commands & Permissions
Commands
/quest, /quests, /mission, /missions, /scroll, /scrolls
Permissions
How It Works
For Players
Example Missions (53 included)
Why Choose ScrollQuest?
Requirements
🖼 Screenshots
Spoiler: In-Game Screenshots
Metrics
This plugin uses bStats to collect anonymous usage stats. You can opt out anytime in plugins/bStats/config.yml.
Support
Need help, found a bug, or want to suggest a feature? Join the Discord for support, setup help, and update announcements.
Click here to join the Discord
Collect. Complete. Claim.
A physical quest system with randomized missions, 5 rarity tiers, and custom rewards
Made with ❤ by zArrowTan, part of the Modern Plugin Series.
ScrollQuest reinvents the quest system by handing players physical paper scrolls that hold randomized missions. Each quest is a real, tradeable item with its own objective, rarity, and rewards. Players collect them, track progress in real time, and right-click to claim, making quests feel tangible and valuable instead of buried in a menu. No database, no setup, just drop it in.
▶ Showcase
- Paper Items: quests are real items players can hold, trade, and collect
- Custom Lore: mission type, progress, rarity, and rewards shown directly in the item lore
- Right-Click Progress: check progress and claim completed quests instantly
- Unique UUIDs: every quest has a unique identifier that prevents duplication
- Auto Cleanup: orphaned and dropped quests are removed automatically
- Common white, 10-50 progress, basic rewards
- Uncommon green, 25-100 progress, decent rewards
- Rare blue with glow, 50-150 progress
- Epic purple with glow, 100-250 progress
- Legendary gold with glow, 200-500 progress
- Walk Blocks: walk any distance
- Chop Trees: chop any tree logs
- Chop Specific Tree: specific wood types (Oak, Spruce, Birch, Crimson, Warped, and more)
- Harvest Crops: harvest any crops
- Harvest Specific Crop: specific crops (Wheat, Carrots, Chorus, Kelp, Sweet Berries, and more)
- Mine Ores: mine any ore blocks
- Mine Specific Ore: specific ores (Coal, Iron, Diamond, Ancient Debris, and more)
- Place Blocks: place any blocks
- Catch Fish: fish in any water body
- Catch Specific Fish: specific fish (Cod, Salmon, Pufferfish, Tropical Fish)
- Kill Mobs: kill any hostile mobs
- Kill Specific Mob: specific entities (Zombies, Skeletons, Creepers, Endermen, Wither Skeletons, and more)
- Money: economy integration through Vault
- XP: award experience points or levels
- Commands: run console commands with the %player% placeholder
- Chance-Based Drops: set a 0-100% chance per reward, with the percentage shown in lore
- Max Rewards Cap: limit how many rewards roll per claim, configurable per mission or rarity
- Multiple Rewards: stack several reward types on a single quest
- ActionBar Display: real-time quest name, progress bar, and percentage
- Title Notifications: big title announcements on completion
- Live Lore Updates: the quest item lore updates automatically
- Visual Progress Bar: color-coded bars showing completion status
- Stack Mode: choose whether identical missions progress together or one-by-one
- 9 PlaceholderAPI Placeholders: for scoreboards, tab lists, and chat formats
- Per-Player Stats: completion stats are tracked and persisted, perfect for leaderboards
- 15+ configurable lore strings: type labels, progress text, reward formats, bar characters, and claim instructions
- All 12 mission type names are translatable to any language
- Mission type icons: customize the emojis or symbols per type
- Rarity display names: rename Common to "Commun", Legendary to "Mythique", anything goes, with full color support
- Ideal for non-English communities or themed servers
🛡 Anti-Exploit Protection
- Player-Placed Block Tracking: breaking a block you placed yourself gives zero progress
- Fully Grown Crops Only: harvest missions require fully grown crops by default, no breaking baby wheat for free progress
- Enabled by default, fully configurable in config.yml
- Per-Rarity Durations: short timers for Commons, longer ones for Legendaries
- Flexible Units: hours (12h), days (7d), or months (1mo)
- Expiration On Lore: players always see when their scrolls expire
- Countdown: incomplete quests show clean countdowns like 3d 5h or < 1m on right-click
- Timezone-Aware: configure your server timezone and a custom date format
- Fully optional, disabled by default
- CustomModelData: assign custom textures per rarity via config.yml
- Dynamic Textures: separate models for in-progress vs completed quests, swapped automatically
- Fully optional, set to 0 to use the vanilla item texture
⚙ Advanced Configuration
- Rarity Customization: set min/max progress per tier
- Custom Sounds: sounds for completion, claims, and failures
- Title Timings: adjust title and subtitle display durations
- Hex Color Support: full hex color codes in every message
- Cleanup Intervals: configurable automatic quest cleanup
- ActionBar Format: customize the display with placeholders
Commands
- /quest give <player> <rarity> [amount]
Give a random quest of a specific rarity - /quest givemission <player> <mission> [amount]
Give a specific mission quest - /quests reload
Reload all configurations
/quest, /quests, /mission, /missions, /scroll, /scrolls
Permissions
- scrollquest.admin (Default: OP)
Access to all admin commands - scrollquest.use (Default: True)
Use and complete quests
For Players
- Receive a quest scroll from an admin or reward system
- Read the details in the item lore (mission type, rarity, rewards)
- Complete the objectives as you play
- Watch your progress in the ActionBar while holding the quest
- Right-click the completed quest to claim your rewards
- Use /quest give to distribute random quests by rarity
- Use /quest givemission to give specific mission types
- Customize missions, rewards, and rarities in missions.yml
- Configure behavior in config.yml
- Edit messages and colors in messages.yml
- Common: Explorer's Journey, Novice Farmer, Apprentice Builder
- Uncommon: Wanderer's Path, Forester's Duty, Expert Miner
- Rare: Oak Master, Wheat Harvester, Iron Extractor, Marathon Runner
- Epic: Legendary Traveler, Diamond Hunter, Titan Builder, Crimson Harvester
- Legendary: Ancient Relic Hunter (1000 Ancient Debris), Chorus Picker
- Unique Physical System: tangible, tradeable quest items instead of database entries
- Randomized Content: no two quests feel the same within a rarity range
- Zero Database Setup: no MySQL, SQLite, or file storage, everything is stored via NBT
- Anti-Exploit Built In: player-placed block tracking and fully-grown crop checks stop progress farming
- PlaceholderAPI Ready: 9 placeholders for scoreboards, tab lists, and leaderboards
- Beautiful Feedback: progress bars, hex colors, glow effects, and title animations
- Highly Configurable: three config files with extensive options
- Performance Optimized: async processing and automatic cleanup
- Easy to Extend: simple YAML structure for adding custom missions
- Minecraft: 1.16 to 1.21.11 (Paper or Spigot, Spigot 26.1)
- Java: 17 or higher (runs fine on a Java 25 JVM)
- Dependencies: none (Vault optional for economy, PlaceholderAPI optional)
- Storage: none required, uses NBT data
🖼 Screenshots
Spoiler: In-Game Screenshots
This plugin uses bStats to collect anonymous usage stats. You can opt out anytime in plugins/bStats/config.yml.
Need help, found a bug, or want to suggest a feature? Join the Discord for support, setup help, and update announcements.
Click here to join the Discord
Collect. Complete. Claim.