promotional bannermobile promotional banner

Scripta

Scripta is a Fabric/NeoForge mod that provides customizable quests, reward tables, progression tracking, and a shared in-game/web editor for managing them.

Scripta (Fabric, Architectury + OwoLib)

Global, data-driven questing mod for Minecraft 1.21.1, currently shipping on Fabric. Only three starter categories ship by default — quests are authored by you (hand-written JSON or the web).

Authoring quests

  • Category: id, display_name, icon {id, count}, sort_order, number
  • Quest: id, category, title, description, icon, objectives[], rewards[], prerequisites[], auto_claim (default true)
  • Objective type: break_block | kill_entity | collect_item | grant_advancement | reach_stat (custom stats only, e.g. minecraft:jump)

Rewards (FTB Quests style)

Each reward is { "type": ..., ... }. Types:

Type Fields Notes
item item, amount Overflow stacks drop at your feet
xp amount Legacy experience alias still loads
xp_levels levels
command command Runs as the player
advancement id Awards every criterion
toast message Client-side toast
choice table or inline options[], count Interactive — picked in the quest book
random table Weighted roll from a reward table
all_table table Grants every entry
loot_crate table Gives a physical crate item (right-click rolls)
empty — Placeholder (table padding)
  • Reward tables are weighted pools: {id, name, entries:[{reward, weight}], crate:{enabled, name}}. Edit them in the web editor's Reward tables panel; quests reference them by id. A choice reward inside a table is refused — choices live on quests directly.
  • Auto-claim (auto_claim, default true): non-interactive rewards are granted the moment the quest completes. Turn it off (or use choice rewards) to require Claim / Choose buttons in the quest book. Claim state is stored per player and synced.
  • Unknown reward types and legacy JSON round-trip instead of failing the quest; one bad entry in a rewards array is skipped, not fatal.
  • Reload with /reload; definitions sync to clients on join and via tick broadcast.

Playing

  • /quests (client command) or G keybind opens the quest book: categories tab, quest list (name + icon), detail overview
  • /questedit opens the full in-game editor (op level 2 enforced server-side): quests, categories, reward tables, presets, and theme controls share the same save/cancel flow as the web editor. Icon upload remains web-only.
  • Web editor: when any world/server runs, operators receive a clickable link on join; /scripta web sends the link again on demand. Edit quests, categories, reward tables, presets, theme, and upload PNG icons from the browser — changes apply instantly and sync to every player. Port override: -Dscripta.webport=<port>. The token is a fresh random value on every server start and is only delivered in chat to operator level 2 players (on join and via /scripta web) — it is never written to the server log, so keep the link secret.
    • Editor layout: sidebar sections for Quests, Categories, Reward tables, Presets, Icons, and GUI theme. A dirty-state bar keeps Save/Discard actions visible while editing.
    • Structured objectives: each objective has a type dropdown, target autocomplete, and count field; targets autocomplete from the live item, block, entity, and advancement registries.
    • Prerequisite chips: add or remove prerequisite quest IDs without editing a comma-separated string.
    • Structured rewards and table entries: reward types come from the server registry, reward tables expose weighted structured entries, and inline/unknown rewards remain editable as raw JSON.
    • Quest categories are a dropdown — pick one, don't type IDs.
    • Numbered categories (set a number on the category) give hierarchical quest IDs: category 1's quests become 1.1, 1.2, … (use the Auto button or leave the ID free-form; unnumbered categories keep classic IDs).
    • Structured reward builder with server-provided type metadata; inline choice options and unknown future types remain editable as raw JSON.
    • Reward tables panel: create/edit/delete weighted tables and toggle their loot-crate mode.
    • Reward presets (Starter Kit, Monster Hunter, Treasure + your own): insert one into any quest with a click, manage them in their own panel.
  • Quest icons are either a block/item ("icon": {"id": "...", "count": 1}) or a texture path ("icon": "scripta:web_icons/dragon.png") from a resource pack or a web-uploaded PNG (auto-synced to clients).
  • /scripta list shows all quests with your completion state
  • /scripta web (operator level 2) sends the clickable web-editor link in chat; operators also receive it automatically on join
  • /scripta sync re-syncs your progress + definitions
  • /scripta reset [<player>] clears progress (op level 2)
  • Completing a quest sends a chat message + level-up sound; item rewards that don't fit are dropped at your feet instead of voided. Auto-claimed rewards are granted immediately; manual-claim / choice rewards show Claim, Choose (picker screen) and Claim All buttons in the quest detail.
  • Progress persists per player via SavedData (scripta_progress); only progress is per-world, quests are global.
  • Removing a quest JSON prunes it from everyone's completed list on the next tick.
  • GUI theme (web console → GUI theme): per-pane surfaces (PANEL, DARK_PANEL, PANEL_INSET, VANILLA_TRANSLUCENT, BLANK, or image:<texture> backgrounds), title/text/accent colors, text shadow, tab + icon sizes, pane widths, and widget colors for buttons, fields, selection, muted text, focus, and danger states. Stored per-world (serverconfig/scripta_theme.json), applied to every player's screens the moment you save. Fonts are intentionally excluded — owo renders labels with Minecraft's global fonts, which only resource packs can change.

Credits

Help

Scripta Team

profile avatar
Owner
  • 1
    Projects
  • 13
    Downloads