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 with single, multi, and sequence. 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 list shows generated quests in a separate section (IDs often start with generated_ or custom internal-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