Random Quest Generator
Last updated Oct 28, 2026
Random Quest Generator (Premium)
The random quest generator creates new quests at runtime from templates. Output is saved to generated.yml by default (configurable).
Premium config files
| File | Role |
|---|---|
random-generator.yml |
Templates, weights, reward pools, timer/condition chances |
generated.yml |
Runtime storage for generated quest IDs (created on first generate) |
Edition: Premium only. Free jar has no generator. Defaults: Default random-generator.yml · Hub: Config Reference.
Commands
Permission: soapsquest.generate
Optional: soapsquest.generate.bypass-cooldown skips cooldown
Config file: random-generator.yml (Premium-only).
/sq generate [type] [count|amount] [objective] [min] [max] [difficulty] [tier] [material]
| Part | Description |
|---|---|
type |
single, multi, or sequence (from allowed-types) |
count / amount |
After a type, one or two lone numbers set objective amount (or min–max), not batch size. Batch count applies when a number is followed by filters (e.g. single 5 kill), or with no type (/sq generate 5). |
objective |
Objective type (kill, break, fish, …) or template name from objectives: (kill_zombies, …) |
min / max |
Amount range after an objective. One number = exact amount. Use - for random |
difficulty / tier / material |
Force tier/difficulty/paper material. Use - for random |
Examples:
/sq generate # Fully random
/sq generate single 20 # One single quest, objective amount 20
/sq generate single 10 50 # One single quest, amount 10–50
/sq generate single kill hard # One kill quest, hard difficulty
/sq generate single 5 kill # Five kill quests (count + objective)
/sq generate single 5 - # Five random singles (count + wildcard objective)
/sq generate single kill 10 50 - rare PAPER # Kill, 10–50 amount, rare tier, paper material
/sq generate single kill_zombies 20 20 # Exact template + fixed amount
/sq generate 5 # Five fully random quests (any type)
Rules:
- Objective type (
kill) — works withsingle,multi, andsequence. Target and template are still randomized within that type unless you also set amounts. - Template name (
kill_zombies) — single quests only. Use a type filter for multi/sequence. - Tab completion shows the current slot name (
<type>,<count|amount|objective>,<amount|objective>, …) plus valid values. Use-for a random slot. - Only objective types in
objective-weights(with weight > 0) and enabled templates are valid filters.
Allowed types come from random-generator.allowed-types (default: single, multi, sequence).
Batch size is capped by max-batch-generate in config.yml (default 25). Cooldown is generate-cooldown seconds (0 = disabled).
After generation, distribute papers:
/sq give <player> <generated_quest_id>
Run /sq reload to refresh lore on papers already given out.
Enable the generator
# random-generator.yml
random-generator:
enabled: true
generated-quest-mode: "persistent" # persistent | temporary | session
save-location: "generated.yml"
allowed-types: [single, multi, sequence]
| Mode | Behavior |
|---|---|
persistent |
Saved in generated.yml, kept after claim |
temporary |
Saved but removed from file after claim |
session |
Runtime only, not written to disk |
Key configuration areas
| Section | Purpose |
|---|---|
id-prefix |
Prefix for generated quest IDs (default generated_) |
tier-pool / difficulty-pool |
Weighted random tier and difficulty |
objective-weights |
Chance per objective type |
objectives.* |
Template pools (targets, amount ranges) |
display.name-templates |
Quest title patterns with placeholders |
display.lore-styles |
simple, detailed, or fancy lore |
reward-pool |
XP, money, items, sigils, chained quests |
timer |
Chance a generated quest is timed; clones scaled fail-reward |
conditions |
Random unlock requirements by tier |
mythicmobs |
Pool for kill_mythicmob when MythicMobs is present |
milestones |
Auto milestone percentages |
Amount formats
- Fixed:
amount: 20 - Range:
amount: [10, 50] - By difficulty:
amount-by-difficulty:with per-difficulty ranges
Display placeholders
<tier>, <tier_prefix>, <tier_color>, <difficulty>, <target>, <amount>, <type>, <objective>, <progress>
Timed generation
Default timer.chance is 0 (never timed). When a quest rolls timed, the generator writes the same timer: / fail-reward: shape as manual quests.yml. fail-reward-scale clones the full success reward: block with scaled numeric amounts. Timed fields on manual quests work in Free; generation is Premium-only.
timer:
chance: 0
minutes: [10, 20]
minutes-by-difficulty:
hard: [8, 12]
start-on: activate # receive | activate (right-click the active paper)
on-expire: fail # fail | consolation | overtime
fail-reward-scale: 0.25
Managing generated quests
/sq listshows generated quests in a separate section (IDs often start withgenerated_or custominternal-name-formats)./sq editor <id>edit in-game (Premium)./sq remove <id>delete from config (then reload).
Performance settings
config.yml:
max-generation-retries: 5
generate-cooldown: 0
max-batch-generate: 25
Batch generation uses a shared API to reduce reload overhead when creating many quests at once.
Version 1.0.5 - Premium
Still stuck? Ask about this page