Party & Session
In: Server Owner Guide · Related: Ruin Templates · Spawning & Clearing · Loot System · Provider & Bridges · Command Reference
QR's multiplayer experience is assembled from three pieces:
| Piece | In one line | Source |
|---|---|---|
| Party | /qr party forms a party (runtime memory), can read MMOCore parties | Prefers MMOCore parties, falls back to QR's built-in temporary party |
| Session | Bossbar, anchor-occupancy judgment, /qr info count | The session of config.yml + the template's session section |
| Entry | Soft-validation rules for player count / growth / class / cost / cooldown | The template's entry section |
🔑 Architectural red line: QR does not compute attributes/damage, and the party is no exception — QR only handles "who counts as a group with whom, and who can enter"; mob strength is still scaled by MythicMobs, and growth is read from QinhClass/MMOCore.
Note
Current implementation boundary (read this first): this page's session (enter/exit big title, time-limit countdown bossbar) and the entry soft-validation section are config and rules reserved for an explicit "enter a dungeon" flow. The current mainline gameplay (naturally generated world structures + auto-spawn on approach + clear-nearby-to-complete) does not go through this entry flow, so these fields currently won't actively trigger. The multiplayer logic that's actually in effect right now is: players within 48 blocks jointly advance spawn objectives, and on clear/realm-cleanse settlement is done for nearby players (see Spawning & Clearing, Realm & Keystone). The /qr party command forms parties normally, and growth/class judgments are readable in real time (used for loot growth scaling, realms, etc.). This page's session/entry fields are written without errors and can serve as forward-looking config, but don't expect them to gate players or pop entry titles right now.
🖼️ [Image placeholder] The moment a party of three enters a ruin (title + purple bossbar) · suggested
assets/session-enter.png
1. Session
A "session" is the reserved runtime layer of a ruin being explored by a group of people — the config items govern bossbar appearance, the time-limit countdown, and the cleanup rule when no one is present.
Note
As stated at the top, the session's "enter/exit big title, time-limit countdown bossbar" depend on the explicit entry flow, which the current mainline gameplay doesn't trigger. The fields below are written without errors, serving as forward-looking config and as the basis for "anchor occupancy" judgment (/qr info, realm/re-entry exclusion).
1.1 Global Config (the session Section of config.yml)
session:
enter-radius: 48 # rally search radius: the range to search for nearby anchors / judge whether teammates have gathered (for the entry flow)
bossbar: true # whether to show the ruin bossbar
bossbar-color: PURPLE # PINK / BLUE / RED / GREEN / YELLOW / PURPLE / WHITE
bossbar-style: SOLID # SOLID / SEGMENTED_6 / SEGMENTED_10 / SEGMENTED_12 / SEGMENTED_20enter-radius: the radius for searching nearby ruins when rallying; teammates must also be within this range to count as gathered. Note: the "/qr enter" written in this item's comment in config.yml is a historical leftover — the/qr entercommand does not actually exist, and there is currently no entry point that goes through the rally flow.bossbar: the global switch and appearance for the bossbar. Currently, realm activation (see Realm & Keystone) uses its ownrealm.bossbar-*settings to show the overhead progress bar; this section'ssession.bossbarconfigures the bossbar of the session entry flow, reserved along with that flow.
1.2 Template-level Session Rules (the session Section of template.yml)
Each ruin can override session behavior in its own template.yml:
# template.yml snippet
session:
mode: shared-anchor # session mode (multiple players share the same instance)
time-limit: 30m # time limit: ends the session when it's up (write 0 or leave empty to use the global; can set longer to feel more like a world structure)
cleanup-on-empty: 60s # how long after everyone leaves before this session is cleaned up (prevents an empty session hanging around)| Field | Default | Description |
|---|---|---|
mode | shared-anchor | Multiple players share the same ruin instance |
time-limit | 30m | Time limit; the bossbar counts down with it. Set it very long to feel more like a "world structure" than a dungeon countdown |
cleanup-on-empty | 60s | After all members leave, the session ends after this long and the anchor reverts to dormant |
Time notation supports
30s/10m/1h, etc.
1.3 Enter/Exit & Clear Hint Text
Session-related player-visible text is in lang/<language>/messages.yml, supporting & color codes and placeholders:
# lang/en_us/messages.yml
messages:
enter-title: "&6⚔ Entering {ruin}" # enter big title ({ruin}=ruin name) — reserved with the entry flow
enter-subtitle: "&7Party of {players} · Time {time}" # subtitle ({players}=count {time}=time limit) — same
exit: "&7You have left the ruin" # leave hint — reserved with the entry flow
complete: "&aRuin exploration complete!"
complete-sub: "&7{ruin} has been conquered" # clear subtitle (visible to nearby players now, in effect)
stage-advance: "&a▶ Stage Reached" # stage-advance big title (in effect)
stage-advance-sub: "&7Entering: {stage}" # stage-advance subtitle (in effect)Note
enter-title/enter-subtitle/exit are reserved along with the "entry flow" above and don't pop up actively right now; what actually appears before the player's eyes are complete-sub/stage-advance* — they're triggered by the spawn-clear/stage-advance logic for nearby players within 48 blocks (see Spawning & Clearing).
The bossbar title is designed to show "ruin name - remaining time" in time-limit mode. For color/style see §1.1.
2. Party
A "party" decides who counts as a group with whom: sharing exploration progress, sharing experience, being entry-validated together.
2.1 Party Source Priority
QR doesn't reinvent the party wheel — it prefers reusing an existing RPG party:
MMOCore party installed ──► use the MMOCore party (read its online members)
otherwise ──► use QR's built-in temporary party (/qr party ...)The sources for growth/class judgment differ slightly: growth prefers QinhClass → MMOCore → vanilla level; party members prefer MMOCore → QR built-in. See Provider & Bridges for details.
2.2 QR Built-in Temporary Party Commands
When no external party system is integrated, use QR's own lightweight temporary party (runtime memory, cleared on restart):
| Command | Permission | Effect |
|---|---|---|
/qr party create | qinhruins.use | Create a party, becoming the leader yourself |
/qr party invite <player> | qinhruins.use | The leader invites someone (the invitee must accept) |
/qr party accept | qinhruins.use | Accept a pending invitation |
/qr party leave | qinhruins.use | Leave the party; if the leader leaves, the whole party disbands |
/qr party info | qinhruins.use | View this party's members |
Rule highlights:
- Only the leader can invite (
createfirst); - Someone already in another party cannot be invited/joined;
- The leader's
leave= disbands the whole party, all members exit.
When solo (no party created / no external party integrated), the party is "just you", and all sharing logic works as usual, just with you as the only member.
2.3 What's Shared
Note
Currently settled by "nearby" rather than "party": objective counting / stage advancement is currently advanced per-anchor globally — anyone killing that ruin's mobs advances the same progress, and the clear big title, cleanse loot, and slot machine eligibility are given to nearby players (within about 48 blocks) rather than strictly by the party roster. So even without a party, leaning in to fight the same ruin together still shares progress and rewards.
A /qr party party's main value right now is "marking who's a group with whom" (for a future entry flow / external systems to read), and reusing its party member list when MMOCore is integrated. Containers/reward chests are still dispensed by each channel's per-player / shared rules; see Loot System.
3. Entry Soft-Validation
Note
Also reserved with the entry flow: the player-count/growth/class/cost/cooldown soft validations defined in the entry section are rules prepared for the explicit "enter a dungeon" flow, and the current mainline gameplay does not actively run these validations (a world structure has no "enter the door" moment). Below the fields, validation semantics, and corresponding text are listed in full, to help you pre-configure, integrate, and understand the meaning of the entry section that /qr save generates by default.
Before entering (when the entry flow triggers), QR runs a set of soft validations on the party present (any failure blocks them with a hint, charging no cost). Configured in the entry section of the template's template.yml:
# template.yml snippet
entry:
min-players: 1 # minimum players present
max-players: 10 # max players (0 or negative=unlimited)
required-classes: [] # classes that must be present in the party (e.g. [warrior, healer])
min-growth: 0 # every member of the party needs growth ≥ this value
cost: "" # entry cost (paid by the leader, requires an economy plugin; e.g. "money:500")
cooldown: 0s # the leader's entry cooldown for the same ruin (e.g. 30m / 1h)| Field | Default | Validation | Failure hint (messages.yml) |
|---|---|---|---|
min-players | 1 | Players present ≥ this value (teammates must rally within enter-radius) | party-not-enough ("{n} more teammates needed") |
max-players | 10 | Players present ≤ this value (≤0=unlimited) | party-too-many (core.yml) |
min-growth | 0 | Every member's growth ≥ this value | growth-too-low (with the names of those who fall short) |
required-classes | empty | For each listed class, at least one person is present in the party | class-required ("the party needs {class}") |
cost | empty | The leader holds enough currency (via the economy bridge) | cost-not-enough |
cooldown | 0 | The leader is not on cooldown for this ruin | anchor-cooldown (with remaining seconds) |
After all validations pass, if the ruin is already occupied by another party, it additionally shows anchor-busy.
Note
These validations are soft thresholds: when the growth/class source can't be read (no QinhClass/MMOCore installed), they're treated as "no restriction" and won't lock players outside the door. The class IDs used by required-classes are decided by the class system you integrate.
Entry Text
# lang/en_us/messages.yml
messages:
party-not-enough: "&e{n} more teammates needed to enter"
growth-too-low: "&cYour growth is not enough to enter this ruin"
class-required: "&eThe party needs a {class} class present"4. Quick Config by Need
Note
The items below with session.* / entry.* are reserved with the "entry flow" (see the note at the top of this page) and don't trigger in the current mainline gameplay; they're listed to help with pre-configuration and integration. Items marked ✅ are in effect now.
| I want… | How |
|---|---|
| A big title on clear / stage advance ✅ | On by default; edit messages.complete-sub / messages.stage-advance* |
| An overhead realm progress bar ✅ | Go realm: realm.bossbar-* (see Realm & Keystone) |
| Players partying up to fight together ✅ | /qr party create → invite; or install MMOCore to reuse its parties |
| Lock level/growth onto a source ✅ | Install QinhClass/MMOCore, and growth becomes readable in real time (used for loot growth scaling, etc.) |
| An overhead progress/countdown bar (entry flow) | session.bossbar: true + template session.time-limit (reserved) |
| A timed challenge (entry flow) | Template session.time-limit: 10m (reserved) |
| At least 3 players to enter (entry flow) | Template entry.min-players: 3 (reserved) |
| A priest required in the party (entry flow) | Template entry.required-classes: [healer] (reserved) |
| Charge a fee to enter (entry flow) | Template entry.cost: "money:500", with an economy plugin (reserved) |
| A cooldown for entering the same ruin (entry flow) | Template entry.cooldown: 1h (reserved) |
Next Steps
- Ruin Templates: all fields of the
entry/sessionsections - Spawning & Clearing: objective counting and clearing during a session
- Provider & Bridges: the priority of growth/party/economy sources
- Command Reference: all
/qr partysubcommands