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 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