Random Quest Generator (Premium)
Last updated Sep 18, 2026
Random Quest Generator (Premium)
The random quest generator creates new quests at runtime from templates in random-generator.yml. Output is saved to generated.yml by default (configurable).
Premium only. Free JAR does not include generator code or config.
Commands
Permission: soapsquest.generate
Optional: soapsquest.generate.bypass-cooldown skips cooldown
/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