Quest Types
QuestKeeper uses a modular quest-type framework (registry pattern). Each type has its own generator and is validated automatically — adding a new type does not require touching the core generation logic.
Quest selection is weighted and configurable under quest-generator.weights (see Configuration). Generated quests target a 5-30 minute completion window for an average player (no Nether Stars, Elytra, Ancient Debris, or dragon kills). Quests are generated automatically from internal curated pools — no external config files are needed to define quests.
Item delivery pool
Materials are drawn from an internal curated pool that covers common, farmable, and renewable items — things players are realistically expected to gather. The pool includes terrain blocks, logs, wool, farm produce, fish, mob drops, ores, and flowers.
Amount scales with rarity tier (the per-tier reward shown below is the generator's internal suggestion — it is currently overridden so every quest awards a flat 1 Quest Point):
| Tier | Example materials | Amount range |
|---|---|---|
| Very common | Dirt, Cobblestone, Sand | 48-64 |
| Common | Oak Log, Coal, Wheat, Feather | 24-48 |
| Uncommon | Iron Ingot, Bread, Slime Ball | 8-16 |
| Rare | Gold Ingot, Blaze Rod, Ender Pearl | 4-8 |
Mob delivery pool
Only passive, herding-friendly mobs are included: Cow, Sheep, Pig, Chicken, Rabbit, Goat. Hostile mobs, bosses, water mobs, and villagers are excluded.
Mob amounts are intentionally low (2-5) since herding takes more effort than gathering items.
Event quest pools
Event (auto-completing) quests draw from internal pools designed for a 5-30 minute completion window:
| Type | Pool / targets |
|---|---|
| Exploration | Desert, Jungle, Snowy Plains, Mushroom Fields, Badlands, Savanna, Taiga, Swamp, Plains, Forest |
| Structure Discovery | Village, Stronghold, Ocean Monument, Nether Fortress, Bastion Remnant, Pillager Outpost, Woodland Mansion, Desert Pyramid |
| Combat | Zombie, Skeleton, Creeper, Spider, Enderman (variants count: e.g. Stray/Bogged/Wither Skeleton → Skeleton; Husk/Drowned/Zombie Villager → Zombie; Cave Spider → Spider) |
| Crafting | Bread, Torch, Glass, Ladder, Stick, Chest, Furnace, Iron Chestplate, Cake |
| Villager Trading | Any completed trade, or trades involving a specific item drawn from across all professions (Wheat, Coal, Paper, Leather, Porkchop, Ink Sac, …). Item-specific trades are validated against the villager's live trade recipe. |
| Biome Collection | Snowballs (Snowy Plains), Cocoa Beans (Jungle), Cactus (Desert), Mushrooms (Mushroom Fields), Warped Fungus (Warped Forest) |
Biome-collection only credits naturally generated blocks broken in the target biome; blocks the player placed are tracked and never count.
Timed quests
When the timed modifier applies (probability set by timed-quests.chance), an eligible quest gains a countdown rendered as a BossBar (Quest Expires In: MM:SS). The countdown starts the first time the player is seen with the quest that day. Running out of time fails the quest for the day. (A configured timed bonus exists but is currently overridden while all quests award a flat 1 point.)
Repeat prevention
The generator will not produce the same type + target combination two days in a row (up to 20 retry attempts). The same logic applies when rerolling mid-day.
Roadmap frameworks
- Escort quests — modular
EscortQuestServicebehind theescort.enabledflag, disabled by default (architecture only). - Dynamic difficulty —
QuestDifficulty(EASY/NORMAL/HARD/ELITE) plus aDifficultyCalculatorstrategy interface, ready to weigh playtime, completions, streak, inventory value and XP level. The default calculator always returnsNORMAL, so balance is unchanged until a real implementation is wired in.