RDQ SetupRDQ (RaindropQuests) is a progression plugin for Paper, Spigot, and Folia servers that combines quests, perks, ranks, and bounties into one connected gameplay system.
Setup Guide Video
OverviewRDQ is built for long-term retention and clear progression loops using four major systems under one plugin: Quests, Perks, Ranks, and Bounties.
QuestsRoute reserved and in active development.
Perks21 built-in perk definitions with passive and event-triggered types.
RanksTree-based progression with six default rank trees.
BountiesConfigurable PvP risk/reward loop with multiple claim modes.
RequirementsBefore setup, confirm your server environment meets these requirements:
JavaJava 21 or higher
Minecraft API1.19+ target
Server SoftwareBukkit, Spigot, Paper, or Folia
Optional IntegrationsVault, LuckPerms, PlaceholderAPI, skills/jobs plugins
InstallationInstall RDQ with RCore and generate defaults before configuration.
1
Download RCoreInstall RCore first from the RaindropCentral products page.
2
Download One RDQ Edition JarChoose your RDQ edition and keep only one edition jar active.
3
Upload Plugin FilesPlace RCore and RDQ jars in your plugins directory.
plugins/4
Start ServerBoot the server once to generate default RDQ folders and files.
5
Configure RDQEdit files under plugins/RDQ manually or use the new dashboard config editors for ranks and perks, then restart or reload after major updates.
plugins/RDQ/6
Run Admin SetupUse the in-game admin route to verify setup flow.
/rq adminConfigurationRDQ uses multiple configuration files. Expand each key file below to view its content block.If you prefer guided editing, the new RDQ config editors work against the same YAML-backed layout for the ranks and perks systems before you export an updated bundle.
plugins/RDQ/bounty/bounty.yml
# RDQ Bounty System Configuration
# Configure how bounties work on your server
# Enable or disable the bounty system
enabled: true
# Allow players to place bounties on themselves
selfTargetAllowed: false
# Distribution Modes - How rewards are given to hunters
instantDistributionEnabled: true
dropDistributionEnabled: true
chestDistributionEnabled: true
virtualDistributionEnabled: true
# Default distribution mode (INSTANT, DROP, CHEST, VIRTUAL)
defaultDistributionMode: "INSTANT"
# Claim Mode - How bounty winners are determined
# LAST_HIT: Player who dealt the final blow gets the bounty
# MOST_DAMAGE: Player who dealt the most damage gets the bounty
# DAMAGE_SPLIT: Bounty is split proportionally among all damage dealers
claimMode: "LAST_HIT"
# Damage tracking window in milliseconds (30000 = 30 seconds)
# Only damage dealt within this window counts toward bounty attribution
trackingWindowInMs: 30000
# Announcements
announceOnCreate: true
announceOnClaim: true
# Announcement scope (SERVER, NEARBY, TARGET)
announcementScope: "SERVER"
# Visual indicators for players with bounties (tab prefix, name color, particles)
visualIndicatorsEnabled: false
# Tax rate (0.0 to 1.0) - Percentage taken from bounty creation
taxRate: 0.0
# Maximum active bounties per player
maxActiveBountiesPerPlayer: 3
# Bounty expiration in hours (-1 for no expiration)
expirationHours: 72
# Supported currencies for bounties
supportedCurrencies:
- "default"
plugins/RDQ/commands/prq.yml
commands:
prq:
name: 'prq'
description: 'RDQImpl Commands'
aliases:
- rq
usage: 'rq <admin | bounty | main | perks | quests | ranks | scoreboard>'
argumentUsages:
1$: 'lut["prefix"] & "&7/" & alias & "&c<admin | bounty | main | perks | quests | ranks | scoreboard>"'
errorMessages:
malformedEnum$: |
lut["prefix"] & "&7The value &c" & value & " &7is not one of (" &
iter_cat(constant_names, (constant_name) => "&c" & constant_name, "&7, ", "&cNo values available") &
"&7)"
playerNotOnline$: 'lut["prefix"] & "&7The player &c" & value & " &7is &cnot online"'
playerUnknown$: 'lut["prefix"] & "&7The player &c" & value & " &7has &cnot played &7on this server before"'
internalError$: 'lut["prefix"] & "&4An internal error occurred"'
notAConsole$: 'lut["prefix"] & "&cYou can only execute this command in the console"'
notAPlayer$: 'lut["prefix"] & "&7This command can only be executed as a &cconsole"'
malformedDouble$: 'lut["prefix"] & "&7The value &c" & value & " &7is not a valid &cdouble"'
malformedFloat$: 'lut["prefix"] & "&7The value &c" & value & " &7is not a valid &cfloat"'
malformedLong$: 'lut["prefix"] & "&7The value &c" & value & " &7is not a valid &clong"'
malformedInteger$: 'lut["prefix"] & "&7The value &c" & value & " &7is not a valid &cinteger"'
permissions:
missingMessage$: 'lut["prefix"] & "You\sre lacking the permission: " & permission'
nodes:
player: 'raindropquests.player'
command: 'raindropquests.command'
commandAdmin: 'raindropquests.command.admin'
commandBounty: 'raindropquests.command.bounty'
commandMain: 'raindropquests.command.main'
commandQuests: 'raindropquests.command.quests'
commandRanks: 'raindropquests.command.ranks'
commandScoreboard: 'raindropquests.command.scoreboard'
commandPerks: 'raindropquests.command.perks'
permissionParents:
player:
- commandBounty
- commandMain
- commandPerks
- commandQuests
- commandRanks
- commandScoreboard
command:
- commandAdmin
- commandBounty
- commandMain
- commandPerks
- commandQuests
- commandRanks
- commandScoreboard
lut:
prefix: '&8[&1Admin&8] &7'
plugins/RDQ/database/hibernate.properties
# ============================================
# Database Type Selection
# ============================================
# Supported types: H2, MYSQL, MARIADB, POSTGRESQL, ORACLE, MSSQL_SERVER, SQLITE, HSQLDB
# Default: H2 (embedded, no external database required)
database.type=H2
# ============================================
# H2 Database Configuration (Default - Embedded)
# ============================================
# H2 is used by default for easy setup without external database
# Mode options: mem (in-memory), file (persistent)
# h2.url=jdbc:h2:file:./plugins/RDQ/database/rdq;MODE=MySQL;AUTO_SERVER=TRUE
# h2.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1
h2.url=jdbc:h2:file:./plugins/RDQ/database/rdq;MODE=MySQL;AUTO_SERVER=TRUE
h2.driver=org.h2.Driver
h2.dialect=org.hibernate.dialect.H2Dialect
h2.username=sa
h2.password=
# ============================================
# MySQL Database Configuration
# ============================================
mysql.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&characterEncoding=UTF-8
mysql.driver=com.mysql.cj.jdbc.Driver
mysql.dialect=org.hibernate.dialect.MySQLDialect
mysql.username=root
mysql.password=change_me
# ============================================
# MariaDB Database Configuration
# ============================================
mariadb.url=jdbc:mariadb://localhost:3306/mydb?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8
mariadb.driver=org.mariadb.jdbc.Driver
mariadb.dialect=org.hibernate.dialect.MariaDBDialect
mariadb.username=root
mariadb.password=change_me
# ============================================
# PostgreSQL Database Configuration
# ============================================
postgresql.url=jdbc:postgresql://localhost:5432/mydb
postgresql.driver=org.postgresql.Driver
postgresql.dialect=org.hibernate.dialect.PostgreSQLDialect
postgresql.username=postgres
postgresql.password=change_me
# ============================================
# Oracle Database Configuration
# ============================================
oracle.url=jdbc:oracle:thin:@localhost:1521:orcl
oracle.driver=oracle.jdbc.OracleDriver
oracle.dialect=org.hibernate.dialect.OracleDialect
oracle.username=system
oracle.password=change_me
# ============================================
# Microsoft SQL Server Configuration
# ============================================
mssql.url=jdbc:sqlserver://localhost:1433;databaseName=mydb;encrypt=false
mssql.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
mssql.dialect=org.hibernate.dialect.SQLServerDialect
mssql.username=sa
mssql.password=change_me
# ============================================
# Hibernate Configuration
# ============================================
# Schema management: validate, update, create, create-drop, none
# Recommended: validate for production, update for development
hibernate.hbm2ddl.auto=update
# Show SQL statements in console (disable in production)
hibernate.show_sql=false
# Format SQL statements for readability
hibernate.format_sql=false
# Highlight SQL syntax in console output
hibernate.highlight_sql=false
# Use SQL comments for debugging
hibernate.use_sql_comments=false
# Batch size for bulk operations
hibernate.jdbc.batch_size=25
# Order inserts for better batching
hibernate.order_inserts=true
# Order updates for better batching
hibernate.order_updates=true
# Generate statistics (disable in production)
hibernate.generate_statistics=false
plugins/RDQ/perks/perk-system.yml
# ============================================================
# RDQ Perk System Configuration
# ============================================================
# This file controls global settings for the perk system.
# Individual perks are configured in separate YAML files in the perks/ directory.
# Enable or disable the entire perk system
# Set to false to completely disable perk functionality
enabled: true
# Maximum number of perks a player can have enabled simultaneously
# Players can unlock unlimited perks but can only enable this many at once
# Set to -1 for unlimited enabled perks
maxEnabledPerksPerPlayer: 5
# Global cooldown multiplier for all perks
# Multiply all perk cooldowns by this value
# 1.0 = normal cooldowns, 2.0 = double cooldowns, 0.5 = half cooldowns
cooldownMultiplier: 1.0
# ============================================================
# UI Settings
# ============================================================
ui:
# Number of perks to display per page in the overview GUI
perksPerPage: 28
# Show locked perks in the overview GUI
# If false, only unlocked perks will be displayed
showLockedPerks: true
# Show requirement progress bars for locked perks
# If false, only show whether requirements are met or not
showRequirementProgress: true
# Sort order for perks in the GUI
# Options: DISPLAY_ORDER, CATEGORY, ALPHABETICAL, UNLOCK_STATUS
sortOrder: "DISPLAY_ORDER"
# Enable category filtering in the overview GUI
# If true, players can filter perks by category
enableCategoryFilter: true
# ============================================================
# Notification Settings
# ============================================================
notifications:
# Notification when a perk is unlocked
unlockNotification:
enabled: true
showTitle: true
showActionBar: true
showChat: true
playSound: true
soundType: "ENTITY_PLAYER_LEVELUP"
soundVolume: 1.0
soundPitch: 1.0
# Notification when a perk is activated
activationNotification:
enabled: true
showTitle: false
showActionBar: true
showChat: false
playSound: true
soundType: "BLOCK_NOTE_BLOCK_PLING"
soundVolume: 0.5
soundPitch: 1.5
# Notification when a perk is on cooldown
cooldownNotification:
enabled: true
showTitle: false
showActionBar: true
showChat: false
playSound: true
soundType: "BLOCK_NOTE_BLOCK_BASS"
soundVolume: 0.3
soundPitch: 0.8
# Notification when a perk is disabled
deactivationNotification:
enabled: true
showTitle: false
showActionBar: true
showChat: false
playSound: false
# ============================================================
# Integration Settings
# ============================================================
integration:
# Enable PERK reward type for rank system integration
# Allows perks to be granted as rank rewards
enablePerkRewards: true
# Automatically enable perks when granted through rewards
# If false, players must manually enable perks after unlocking
autoEnableOnGrant: false
# Enable perk statistics tracking
# Tracks usage count, total usage time, etc.
enableStatistics: true
# Enable perk requirement progress caching
# Improves performance but may delay progress updates
cacheRequirementProgress: true
# Requirement progress cache duration in seconds
requirementProgressCacheDuration: 30
# ============================================================
# Performance Settings
# ============================================================
performance:
# Refresh interval for passive potion effects in ticks
# Lower values = smoother effects but more CPU usage
# 20 ticks = 1 second
potionEffectRefreshInterval: 100
# Cleanup interval for expired cooldowns in ticks
# How often to remove expired cooldown entries from memory
cooldownCleanupInterval: 1200 # 60 seconds
# Enable async database operations for perk management
# Improves performance but may introduce slight delays
asyncDatabaseOperations: true
# Batch size for bulk perk operations
# Number of perks to process in a single database transaction
batchSize: 50
# ============================================================
# Debug Settings
# ============================================================
debug:
# Enable debug logging for perk system
# Logs detailed information about perk operations
enabled: false
# Log perk activation/deactivation events
logActivations: false
# Log requirement checks
logRequirementChecks: false
# Log cooldown operations
logCooldowns: false
# Log database operations
logDatabaseOperations: false
# ============================================================
# Advanced Settings
# ============================================================
advanced:
# Allow players to have duplicate perks
# If true, players can unlock the same perk multiple times
allowDuplicatePerks: false
# Persist perk states across server restarts
# If false, all active perks are deactivated on restart
persistStatesOnRestart: true
# Reactivate enabled perks on player login
# If false, players must manually reactivate perks after login
reactivateOnLogin: true
# Deactivate all perks on player logout
# Recommended to keep true to prevent issues
deactivateOnLogout: true
# Allow perk configuration hot-reload
# If true, admins can reload perk configs without restart
allowHotReload: true
# Preserve player perk data on hot-reload
# If false, all player perk states are reset on reload
preservePlayerDataOnReload: true
plugins/RDQ/perks/*.yml
# Combat Heal Perk
# Heals the player when taking damage with a chance
identifier: "combat_heal"
perkType: "EVENT_TRIGGERED"
category: "COMBAT"
enabled: true
displayOrder: 15
icon:
type: "GOLDEN_APPLE"
displayNameKey: "perk.combat_heal.name"
descriptionKey: "perk.combat_heal.description"
enchanted: true
requirements:
level_requirement:
type: "EXPERIENCE_LEVEL"
level: 28
icon:
type: "EXPERIENCE_BOTTLE"
currency_requirement:
type: "CURRENCY"
currency: "raindrops"
amount: 3000.0
consumable: true
icon:
type: "GOLD_INGOT"
unlockRewards:
welcome_message:
type: "COMMAND"
command: "tellraw {player} {\"text\":\"You unlocked Combat Heal! Survive longer in battle!\",\"color\":\"red\"}"
executeAsPlayer: false
effect:
triggerEvent: "ENTITY_DAMAGE_BY_ENTITY"
cooldownMillis: 30000 # 30 seconds
triggerChance: 25.0 # 25% chance
customConfig:
healAmount: 4.0 # 2 hearts
playSound: true
soundType: "ENTITY_PLAYER_LEVELUP"
plugins/RDQ/permissions/permissions.yml
# Permissions Configuration for Admin View
# Format: defaultGroupPermissions contains plugin names as keys with their permissions as lists
defaultGroup: "default"
defaultGroupPermissions:
# ============================================
# RaindropCentral Permissions
# ============================================
RDQ:
- rainrdopquests.player
RDR:
- raindroprserve.player
RDS:
- raindropshops.player
JExEconomy:
- jexeconomy.use
- jexeconomy.balance
- jexeconomy.pay
# ============================================
# Supported Plugin Permissions
# ============================================
AuraSkills:
- auraskills.skill.farming
- auraskills.skill.foraging
- auraskills.skill.mining
- auraskills.skill.fishing
- auraskills.skill.excavation
- auraskills.skill.archery
- auraskills.skill.defense
- auraskills.skill.fighting
- auraskills.skill.agility
- auraskills.skill.enchanting
- auraskills.skill.alchemy
- auraskills.command.skills
- auraskills.command.stats
- auraskills.command.sources
- auraskills.command.help
- auraskills.command.mana
- auraskills.command.top
- auraskills.command.rank
- auraskills.command.lang
- auraskills.command.abtoggle
- auraskills.command.claimitems
ChestSort:
- chestsort.use
- chestsort.use.inventory
CMI:
- cmi.command.back
- cmi.command.balance
- cmi.command.baltop
- cmi.command.chat
- cmi.command.checkxp
- cmi.command.dback
- cmi.command.info
- cmi.command.money.give
- cmi.command.msg
- cmi.command.mute
- cmi.command.pay
- cmi.command.suicide
- cmi.command.tphere
- cmi.command.tpdeny
- cmi.command.tpahere
- cmi.command.tpaccept
- cmi.command.tpa
- cmi.command.tp
- cmi.bedhome
- cmi.command.playtime
- cmi.command.ptime
- cmi.command.recipe
- cmi.command.sethome
- cmi.command.rt
- cmi.command.home
- cmi.command.hat
DiscordSRV:
- discordsrv.chat
- discordsrv.player
- discordsrv.link
- discordsrv.unlink
EcoJobs:
- ecojobs.command.jobs
- ecojobs.command.join
- ecojobs.command.leave
Essentials:
- essentials.afk
- essentials.back
- essentials.balance
- essentials.balancetop
- essentials.compass
- essentials.condense
- essentials.eco
- essentials.enderchest
- essentials.exp
- essentials.exp.give
- essentials.hat
- essentials.help
- essentials.home.bed
- essentials.ignore
- essentials.msg
- essentials.msg.magic
- essentials.msg.format
- essentials.mute
- essentials.pay
- essentials.msg
- essentials.rules
- essentials.sethome
- essentials.sethome.bed
- essentials.delhome
- essentials.setwarp
- essentials.suicide
- essentials.top
- essentials.tp
- essentials.tp.others
- essentials.tpa
- essentials.tpacancel
- essentials.tpahere
- essentials.tpdeny
- essentials.tphere
- essentials.warp
- essentials.warp.list
- essentials.warpinfo
- essentials.warps.*
- essentials.link
- essentials.unlink
- essentials.spawn
- essentials.setspawn
- essentials.chat.color
- essentials.chat.format
- essentials.chat.local
- essentials.discord
HuskTowns:
- husktowns.command.town.*
JobsReborn:
- jobs.use
- jobs.world.world
- jobs.command.browse
- jobs.command.top
- jobs.command.join
- jobs.command.leave
- jobs.command.leaveall
- jobs.command.info
mcMMO:
- mcmmo.defaults
Towny:
- towny.claimed.owntown.build.*
- towny.claimed.owntown.destroy.*
- towny.command.plot.claim
- towny.command.plot.unclaim
- towny.command.plot.perm
- towny.command.plot.toggle.*
- towny.command.plot.set.*
- towny.command.plot.clear
- towny.command.resident.*
- towny.command.town.here
- towny.command.town.list
- towny.command.town.new
- towny.command.town.leave
- towny.command.town.withdraw
- towny.command.town.deposit
- towny.command.town.rank.*
- towny.command.town.reslist
- towny.command.town.claim.*
- towny.command.town.unclaim
- towny.command.town.online
- towny.command.nation.list
- towny.command.nation.new
- towny.command.nation.leave
- towny.command.nation.withdraw
- towny.command.nation.deposit
- towny.command.nation.rank.*
- towny.wild.build.*
- towny.wild.destroy.*
- towny.wild.switch.*
- towny.wild.item_use.*
- towny.chat.general
- towny.chat.town
- towny.chat.nationplugins/RDQ/ranks/rank-system.yml
# RDQ Rank System Configuration
# This file controls all rank progression settings
# Enable or disable the rank system
enabled: true
# Progression settings
progression:
# Enforce linear progression within a rank tree
linearProgression: true
# Allow skipping ranks if all requirements are met
allowSkipping: false
# Automatically unlock next rank when requirements are met
autoUnlock: true
# Active rank tree limits
trees:
# Maximum number of active rank trees per player
# Free edition: 1, Premium edition: unlimited (-1)
maxActiveTrees: 1
# Allow switching between rank trees
crossTreeSwitching: false
# Cooldown for switching trees (seconds) - 1728000 = 20 days
switchingCooldownSeconds: 1728000
# Tier threshold required before cross-tree switching is allowed
switchingTierThreshold: 3
# Final rank requirements
finalRank:
# Require completion of multiple trees for final rank
requireMultipleTrees: false
# Number of trees required for final rank
requiredTreeCount: 3
# Minimum tier in each tree
minimumTierPerTree: 5
# LuckPerms integration
luckperms:
# Enable LuckPerms integration
enabled: true
# Assign permission groups on rank unlock
assignGroups: true
# Apply prefix/suffix on rank change
applyPrefixSuffix: true
# Remove previous rank group when new rank is unlocked
removePreviousGroup: true
# Notifications
notifications:
# Notification on rank unlock
onUnlock:
enabled: true
# Show title message
title: true
# Show subtitle message
subtitle: true
# Show actionbar message
actionbar: true
# Play sound
sound:
enabled: true
type: "ENTITY_PLAYER_LEVELUP"
volume: 1.0
pitch: 1.0
# Show firework effect
firework:
enabled: true
colors:
- "GOLD"
- "YELLOW"
# Broadcast rank unlock to server
broadcast:
enabled: true
# Minimum tier to broadcast
minimumTier: 3
# Requirement checking
requirements:
# Check requirements in real-time
realTimeCheck: true
# Cache requirement check results (seconds)
cacheDurationSeconds: 30
# Show progress toward requirements in GUI
showProgress: true
# GUI settings
gui:
# Items per page in rank list
itemsPerPage: 28
# Show locked ranks
showLockedRanks: true
# Show requirement progress
showRequirementProgress: true
# System settings
settings:
# Enable the rank system
enableRankSystem: true
# Enable final rank rules
enableFinalRankRules: true
# Enable cross-tree progression
enableCrossTreeProgression: true
# Enable progress tracking
enableProgressTracking: true
# Enable rank broadcasts
enableRankBroadcasts: true
# Invert navigation buttons (up/down) in rank path overview
# When true, the up button moves down and the down button moves up
# This is useful for users who prefer inverted navigation
invertNavigation: false
plugins/RDQ/ranks/paths/*.yml
# Cleric Rank Tree
# The path of healing and support
displayOrder: 1
isEnabled: true
isFinalRankTree: false
requiresAllRankTreesToBeDone: false
minimumRankTreesToBeDone: 0
icon:
type: "GOLDEN_APPLE"
prerequisiteRankTrees: []
connectedRankTrees: []
switchableRankTiers: []
crossTreeProgression:
allowSwitching: true
switchRankTiers: []
requireSameRankTier: false
allowDowngrade: false
switchingCosts: ""
switchingCooldown: 86400
ranks:
acolyte:
tier: 1
weight: 100
luckPermsGroup: "cleric_acolyte"
prefixKey: "&8[&7Acolyte&8]"
suffixKey: ""
isInitialRank: true
isEnabled: true
icon:
type: "APPLE"
nextRanks: ["healer"]
rewards:
welcome_kit:
type: "COMPOSITE"
rewards:
- type: "ITEM"
item:
material: "APPLE"
amount: 16
- type: "ITEM"
item:
material: "BREAD"
amount: 16
starting_currency:
type: "CURRENCY"
amount: 50
currencyId: "raindrops"
healer:
tier: 2
weight: 200
luckPermsGroup: "cleric_healer"
prefixKey: "&8[&eHealer&8]"
suffixKey: ""
isEnabled: true
icon:
type: "GOLDEN_APPLE"
previousRanks: ["acolyte"]
nextRanks: ["priest"]
rewards:
healer_reward:
type: "CURRENCY"
amount: 150
currencyId: "raindrops"
healing_bonus:
type: "ITEM"
item:
material: "GOLDEN_APPLE"
amount: 5
healer_experience:
type: "EXPERIENCE"
experienceAmount: 500
experienceType: "POINTS"
requirements:
healing_supplies:
icon:
type: "GOLDEN_APPLE"
itemRequirement:
consumeOnComplete: true
requiredItems:
item1:
type: "GOLDEN_APPLE"
amount: 10
item2:
type: "GLISTERING_MELON_SLICE"
amount: 16
item3:
type: "GOLDEN_CARROT"
amount: 16
experience_req:
icon:
type: "EXPERIENCE_BOTTLE"
experienceRequirement:
consumeOnComplete: true
requiredType: "LEVEL"
requiredLevel: 10
priest:
tier: 3
weight: 300
luckPermsGroup: "cleric_priest"
prefixKey: "&8[&6Priest&8]"
suffixKey: ""
isEnabled: true
icon:
type: "ENCHANTED_GOLDEN_APPLE"
previousRanks: ["healer"]
nextRanks: ["bishop_divine", "bishop_light", "bishop_soul"]
rewards:
priest_reward:
type: "CURRENCY"
amount: 300
currencyId: "raindrops"
priest_blessing:
type: "COMPOSITE"
rewards:
- type: "ITEM"
item:
material: "ENCHANTED_GOLDEN_APPLE"
amount: 2
- type: "ITEM"
item:
material: "GOLDEN_APPLE"
amount: 10
priest_experience:
type: "EXPERIENCE"
experienceAmount: 1000
experienceType: "POINTS"
requirements:
priest_supplies:
icon:
type: "ENCHANTED_GOLDEN_APPLE"
itemRequirement:
consumeOnComplete: true
requiredItems:
item1:
type: "GOLDEN_APPLE"
amount: 32
item2:
type: "ENCHANTED_GOLDEN_APPLE"
amount: 2
item3:
type: "GHAST_TEAR"
amount: 8
experience_req:
icon:
type: "EXPERIENCE_BOTTLE"
experienceRequirement:
consumeOnComplete: true
requiredType: "LEVEL"
requiredLevel: 20
playtime_req:
icon:
type: "CLOCK"
playtimeRequirement:
useTotalPlaytime: true
requiredPlaytimeSeconds: 21600
bishop_divine:
tier: 4
weight: 400
luckPermsGroup: "cleric_bishop_divine"
prefixKey: "&8[&bBishop of Divinity&8]"
suffixKey: ""
isEnabled: true
icon:
type: "BEACON"
previousRanks: ["priest"]
nextRanks: ["high_priest_divine"]
rewards:
bishop_divine_reward:
type: "CURRENCY"
amount: 500
currencyId: "raindrops"
bishop_divine_blessing:
type: "COMPOSITE"
rewards:
- type: "ITEM"
item:
material: "BEACON"
amount: 1
- type: "ITEM"
item:
material: "TOTEM_OF_UNDYING"
amount: 1
bishop_divine_experience:
type: "EXPERIENCE"
experienceAmount: 1500
experienceType: "POINTS"
requirements:
bishop_divine_supplies:
icon:
type: "BEACON"
itemRequirement:
consumeOnComplete: true
requiredItems:
item1:
type: "BEACON"
amount: 1
item2:
type: "TOTEM_OF_UNDYING"
amount: 2
item3:
type: "ENCHANTED_GOLDEN_APPLE"
amount: 8
experience_req:
icon:
type: "EXPERIENCE_BOTTLE"
experienceRequirement:
consumeOnComplete: true
requiredType: "LEVEL"
requiredLevel: 30
bishop_light:
tier: 4
weight: 400
luckPermsGroup: "cleric_bishop_light"
prefixKey: "&8[&6Bishop of Light&8]"
suffixKey: ""
isEnabled: true
icon:
type: "ENCHANTED_GOLDEN_APPLE"
previousRanks: ["priest"]
nextRanks: ["high_priest_light"]
rewards:
bishop_light_reward:
type: "CURRENCY"
amount: 500
currencyId: "raindrops"
bishop_light_blessing:
type: "COMPOSITE"
rewards:
- type: "ITEM"
item:
material: "ENCHANTED_GOLDEN_APPLE"
amount: 4
- type: "ITEM"
item:
material: "GOLDEN_APPLE"
amount: 16
bishop_light_experience:
type: "EXPERIENCE"
experienceAmount: 1500
experienceType: "POINTS"
requirements:
bishop_light_supplies:
icon:
type: "ENCHANTED_GOLDEN_APPLE"
itemRequirement:
consumeOnComplete: true
requiredItems:
item1:
type: "ENCHANTED_GOLDEN_APPLE"
amount: 8
item2:
type: "GOLDEN_APPLE"
amount: 32
item3:
type: "GLOWSTONE"
amount: 64
experience_req:
icon:
type: "EXPERIENCE_BOTTLE"
experienceRequirement:
consumeOnComplete: true
requiredType: "LEVEL"
requiredLevel: 30
bishop_soul:
tier: 4
weight: 400
luckPermsGroup: "cleric_bishop_soul"
prefixKey: "&8[&3Bishop of Souls&8]"
suffixKey: ""
isEnabled: true
icon:
type: "TOTEM_OF_UNDYING"
previousRanks: ["priest"]
nextRanks: ["high_priest_soul"]
rewards:
bishop_soul_reward:
type: "CURRENCY"
amount: 500
currencyId: "raindrops"
bishop_soul_blessing:
type: "COMPOSITE"
rewards:
- type: "ITEM"
item:
material: "TOTEM_OF_UNDYING"
amount: 2
- type: "ITEM"
item:
material: "GHAST_TEAR"
amount: 12
bishop_soul_experience:
type: "EXPERIENCE"
experienceAmount: 1500
experienceType: "POINTS"
requirements:
bishop_soul_supplies:
icon:
type: "TOTEM_OF_UNDYING"
itemRequirement:
consumeOnComplete: true
requiredItems:
item1:
type: "TOTEM_OF_UNDYING"
amount: 3
item2:
type: "GHAST_TEAR"
amount: 20
item3:
type: "NETHER_STAR"
amount: 1
experience_req:
icon:
type: "EXPERIENCE_BOTTLE"
experienceRequirement:
consumeOnComplete: true
requiredType: "LEVEL"
requiredLevel: 30
high_priest_divine:
tier: 5
weight: 500
luckPermsGroup: "cleric_high_priest_divine"
prefixKey: "&8[&5High Priest of Divinity&8]"
suffixKey: ""
isEnabled: true
isFinalRank: true
icon:
type: "BEACON"
previousRanks: ["bishop_divine"]
rewards:
high_priest_divine_reward:
type: "CURRENCY"
icon:
type: "EMERALD_BLOCK"
amount: 1000
currencyId: "raindrops"
divine_blessing:
type: "COMPOSITE"
icon:
type: "BEACON"
rewards:
- type: "ITEM"
item:
material: "BEACON"
amount: 1
- type: "ITEM"
item:
material: "TOTEM_OF_UNDYING"
amount: 3
- type: "ITEM"
item:
material: "ENCHANTED_GOLDEN_APPLE"
amount: 10
high_priest_divine_experience:
type: "EXPERIENCE"
icon:
type: "EXPERIENCE_BOTTLE"
experienceAmount: 3000
experienceType: "POINTS"
requirements:
ultimate_high_priest_divine:
icon:
type: "BEACON"
itemRequirement:
consumeOnComplete: true
requiredItems:
item1:
type: "BEACON"
amount: 1
item2:
type: "TOTEM_OF_UNDYING"
amount: 5
item3:
type: "ENCHANTED_GOLDEN_APPLE"
amount: 16
item4:
type: "NETHER_STAR"
amount: 1
experience_req:
icon:
type: "EXPERIENCE_BOTTLE"
experienceRequirement:
consumeOnComplete: true
requiredType: "LEVEL"
requiredLevel: 45
high_priest_light:
tier: 5
weight: 500
luckPermsGroup: "cleric_high_priest_light"
prefixKey: "&8[&6High Priest of Light&8]"
suffixKey: ""
isEnabled: true
isFinalRank: true
icon:
type: "ENCHANTED_GOLDEN_APPLE"
previousRanks: ["bishop_light"]
rewards:
high_priest_light_reward:
type: "CURRENCY"
icon:
type: "EMERALD_BLOCK"
amount: 100
currencyId: "raindrops"
sacred_feast:
type: "COMPOSITE"
icon:
type: "ENCHANTED_GOLDEN_APPLE"
rewards:
- type: "ITEM"
item:
material: "ENCHANTED_GOLDEN_APPLE"
amount: 12
- type: "ITEM"
item:
material: "GOLDEN_APPLE"
amount: 32
- type: "ITEM"
item:
material: "GLOWSTONE"
amount: 128
high_priest_light_experience:
type: "EXPERIENCE"
icon:
type: "EXPERIENCE_BOTTLE"
experienceAmount: 3000
experienceType: "POINTS"
requirements:
ultimate_high_priest_light:
icon:
type: "ENCHANTED_GOLDEN_APPLE"
itemRequirement:
consumeOnComplete: true
requiredItems:
item1:
type: "ENCHANTED_GOLDEN_APPLE"
amount: 16
item2:
type: "GOLDEN_APPLE"
amount: 64
item3:
type: "GLOWSTONE"
amount: 128
item5:
type: "BEACON"
amount: 1
experience_req:
icon:
type: "EXPERIENCE_BOTTLE"
experienceRequirement:
consumeOnComplete: true
requiredType: "LEVEL"
requiredLevel: 45
high_priest_soul:
tier: 5
weight: 500
luckPermsGroup: "cleric_high_priest_soul"
prefixKey: "&8[&3High Priest of Souls&8]"
suffixKey: ""
isEnabled: true
isFinalRank: true
icon:
type: "TOTEM_OF_UNDYING"
previousRanks: ["bishop_soul"]
rewards:
high_priest_soul_reward:
type: "CURRENCY"
icon:
type: "EMERALD_BLOCK"
amount: 100
currencyId: "raindrops"
eternal_guard:
type: "COMPOSITE"
icon:
type: "TOTEM_OF_UNDYING"
rewards:
- type: "ITEM"
item:
material: "TOTEM_OF_UNDYING"
amount: 5
- type: "ITEM"
item:
material: "NETHER_STAR"
amount: 1
- type: "ITEM"
item:
material: "HEART_OF_THE_SEA"
amount: 1
high_priest_soul_experience:
type: "EXPERIENCE"
icon:
type: "EXPERIENCE_BOTTLE"
experienceAmount: 3000
experienceType: "POINTS"
requirements:
ultimate_high_priest_soul:
icon:
type: "TOTEM_OF_UNDYING"
itemRequirement:
consumeOnComplete: true
requiredItems:
item1:
type: "TOTEM_OF_UNDYING"
amount: 8
item2:
type: "NETHER_STAR"
amount: 1
item3:
type: "HEART_OF_THE_SEA"
amount: 1
item4:
type: "GHAST_TEAR"
amount: 32
experience_req:
icon:
type: "EXPERIENCE_BOTTLE"
experienceRequirement:
consumeOnComplete: true
requiredType: "LEVEL"
requiredLevel: 45
Config EditorsRDQ now includes dedicated config editors for the ranks and perks systems. They are a good fit when you want a safer, more visual workflow than editing every file by hand.The editors currently cover
plugins/RDQ/ranks/rank-system.yml, plugins/RDQ/ranks/paths/*.yml, plugins/RDQ/perks/perk-system.yml, and plugins/RDQ/perks/*.yml.RDQ Editor Suite
Open the dashboard launcher for the full RDQ config editor suite and choose the tool that matches the work you are doing.Open the editor suiteRanks Editor
Use the graph-first ranks editor for rank-system settings, paths, rank nodes, requirements, and rewards.Open the ranks editorPerks Editor
Use the form-first perks editor for perk-system settings, perk metadata, effect configuration, rewards, and ordering.Open the perks editorConfig Editor Docs
Read the full editor guide for screenshots, workflows, and a file-by-file overview of what the new tools cover.Read the config editor docsIntegrationsRDQ can detect and integrate with economy, permissions, placeholders, and skills/jobs ecosystems.
JExEconomy
PlaceholderAPI
mcMMO
AuraSkills
JobsReborn
EcoJobs
Vault
TheNewEconomy
Database SupportRDQ supports embedded and external databases configured through
database/hibernate.properties.H2
MySQL
MariaDB
PostgreSQL
Oracle
Microsoft SQL Server
SQLite
HSQLDB
Next Steps
Launch the RDQ config editor suite for the new ranks and perks workflows
Review the Config Editors documentation page for screenshots and workflow details
Review full command routing on the Commands documentation page
Review permission nodes on the Permissions documentation page