premium banner
Adds request and quest boards that let players exchange materials for coins rewards.

Description

Quest & Request Boards

Quest & Request Boards is a Hytale mod that introduces a structured commission and quest board system designed for SMP and RP servers.

It allows players to publish material requests with guaranteed coin rewards, while admins can create server-controlled quests, all with a secure, configurable, and exploit-safe economy.


🔗 Dependency

This mod requires:

All currency handling (copper / silver / gold / platinum), conversions, and ratios are directly inherited from the Coins & Markets configuration.


📌 Important:

This mod do not involves in any way real world money, just to be clear.


📌 Mod Content

📋 Request Board (Player-Owned)

A player-owned board, similar in concept to a vendor, used to publish purchase orders for materials.

With a Request Board, players can:

  • Create requests specifying:
    • requested item
    • quantity
    • coin reward

  • Accept deliveries from other players
  • Automatically pay contributors
  • Collect purchased materials from a physical storage

Each board includes a 36-slot Inbox (4×9):

  • All delivered items are stored here
  • If the Inbox is full, deliveries are blocked
  • No virtual items and no item loss


🧾 Quest Board (Admin)

A admin-owned board, used to publish repetable (or not if you choose soo) Quest for materials, in exchange of coins.
Each Quest is personal for the player, for each cooldown every player can complete a specific Quest once.

Command Quests

 

When a player completes a specific Quest, the server can automatically run one or more commands as a reward/action.

Practical examples (write 1 command per line):

  • console: broadcast {player} purchased VIP!
  • console: give {player} Coin_Gold 3
  • console: lp user {player} parent add vip 30d
  • player: give {player} Coin_Silver

Rules / tips:

  • One command per line (add multiple lines to chain rewards).
  • No dangerous commands (avoid OP/perm escalation unless you really mean it).
  • Test first with a safe offer on a test quest board before using it for real rewards.


💰 Secure Economy (Escrow System)

All requests use a built-in escrow system:

  • Coins are locked at request creation
  • Payments are guaranteed
  • No scams or unpaid deliveries
  • All transactions are atomic:
    • everything succeeds, or nothing happens

🔁 Request Copies & Cooldowns

A single request can represent multiple identical copies (e.g. 10 jobs).

Additionally:

  • Each player can complete only one copy per cooldown
  • Ideal for:
    • repeatable commissions
    • distributed labor
    • preventing single-player farming

⚙️ Configuration (Permissions, Config Fallback & LuckPerms)

Quest & Request Boards creates a single JSON config file on first startup:

  • File name: quest_request_boards.json
  • Location: inside the mod/plugin data directory (auto-created)

Changes apply after a server restart (the file is also automatically pretty-formatted and re-saved on boot).

▶️ 1) Permission system overview (what mode are you using?)

This mod supports two different access control styles:

  • Config Fallback Mode (default / permissive)
    Used when LuckPerms is NOT active (or when the permission backend is unavailable and fail-open is enabled).
    In this mode, the mod behaves mostly like an ownership + config rules system:
    • Board owner is trusted by default for some actions (example: canceling own requests, opening own inbox).
    • Operators (OP) can bypass most restrictions.
    • Some actions are always allowed for everyone (example: fulfilling requests), unless you switch to LuckPerms mode.
  • LuckPerms Mode (strict / permission-driven)
    Used when UseLuckPerms is enabled and LuckPerms is installed & available.
    In this mode, most actions are controlled by explicit permission nodes:
    • Ownership alone is NOT enough for many actions (example: owners need ...cancel.own and ...inbox.open.own).
    • Great for RP/SMP servers that want role-based access (citizens vs. merchants vs. staff).
    • Recommended if you want to prevent “default OP power” and fully control who can do what.

Tip: If you enable LuckPerms mode, remember to grant “basic player” permissions, otherwise players may be able to see boards but not use key actions like creating/canceling requests or opening inboxes.

▶️ 2) Access.Provider settings (Enabled / LuckPerms / Fail-Open vs Fail-Closed)

The permission backend is controlled by:

"Access": {
  "Provider": {
    "Enabled": true,
    "UseLuckPerms": false,
    "DefaultDenyWhenUnavailable": false
  }
}
  • Access.Provider.Enabled
    true = the mod evaluates permissions (native / OP / LuckPerms, depending on the other settings).
    false = permission nodes are ignored; the mod relies on config/ownership behavior (and OP bypass where applicable).
  • Access.Provider.UseLuckPerms
    true = use LuckPerms if it is installed & available.
    false = use the server’s native permissions (and OP support).
  • Access.Provider.DefaultDenyWhenUnavailable
    Controls what happens if the external permission backend is not available:
    • false (fail-open): the mod falls back to config/ownership rules so your server keeps working.
    • true (fail-closed): the mod becomes strict and will deny most permission-gated actions if the external backend is unavailable.

Logging: set Access.Logging.LogChecks to true to log permission checks (useful while tuning LuckPerms groups).

Performance note: permission checks are cached for a few seconds internally to reduce spam and load.

▶️ 3) Request Board access rules (Config vs LuckPerms)

Request Boards are player-owned. The mod evaluates permissions differently depending on the mode:

  • Open / Use the Request Board UI
    Config key: Access.RequestBoard.Use.RequirePermissionToUseRequestBoard
    Permission node: questrequestboards.requestboard.use
    • If RequirePermissionToUseRequestBoard = false → anyone can open.
    • If true → only enforced in strict/LuckPerms mode (otherwise it behaves permissively unless fail-closed is enabled).
  • Create Requests on a Request Board
    Config key: Access.RequestBoard.Create.OnlyOwnerCanCreateRequests
    Permission node: questrequestboards.request.create
    • Config Fallback Mode:
      • If OnlyOwnerCanCreateRequests = true → only the board owner can create requests.
      • If false → anyone can create requests on any board.
      • Having questrequestboards.request.create acts as a bypass to allow creating even when owner-only is enabled.
      • OP can bypass in fallback mode.
    • LuckPerms Mode:
      • questrequestboards.request.create is required.
      • Ownership alone does not grant create permissions.
  • Fulfill / Deliver Requests
    Permission node: questrequestboards.request.fulfill
    • Config Fallback Mode: allowed for everyone.
    • LuckPerms Mode: requires questrequestboards.request.fulfill.
  • Cancel Requests
    Config key: Access.RequestBoard.Manage.OtherPlayersCanCancelRequests
    Permission nodes: questrequestboards.request.cancel.own, questrequestboards.request.cancel.any
    • Config Fallback Mode:
      • Owner can always cancel their own requests.
      • Other players can cancel if OtherPlayersCanCancelRequests = true.
      • ...cancel.any can act as a bypass for staff (even if the config disallows it).
    • LuckPerms Mode:
      • ...cancel.any lets you cancel any request.
      • ...cancel.own is required to cancel your own requests (ownership alone is not enough).
  • Open the Inbox (delivered items storage)
    Config key: Access.RequestBoard.Manage.OtherPlayersCanOpenInbox
    Permission nodes: questrequestboards.inbox.open.own, questrequestboards.inbox.open.any
    • Config Fallback Mode:
      • Owner can always open their own inbox.
      • Other players can open if OtherPlayersCanOpenInbox = true.
      • ...open.any can be used as a staff bypass.
    • LuckPerms Mode:
      • ...open.any lets you open anyone’s inbox.
      • ...open.own is required to open your own inbox (ownership alone is not enough).
  • Break / Remove a Request Board block
    Config keys:
    Access.RequestBoard.Break.AllowCreativeBreakAny,
    Access.RequestBoard.Break.AllowOpBreakAny,
    Access.RequestBoard.Manage.OtherPlayersCanBreakBoard
    Permission node: questrequestboards.requestboard.break.any
    • Owner can always break their own board.
    • Non-owners:
      • In strict/LuckPerms mode → require questrequestboards.requestboard.break.any.
      • In fallback mode → can be allowed by config (OtherPlayersCanBreakBoard) and OP bypass also applies.

▶️ 4) Quest Board access rules (Config vs LuckPerms)

Quest Boards are typically admin/staff controlled. Main controls:

  • Open / Use the Quest Board UI
    Config key: Access.QuestBoard.Use.RequirePermissionToUseQuestBoard
    Permission node: questrequestboards.questboard.use
  • Place Quest Boards
    Permission node: questrequestboards.questboard.place
    • Config Fallback Mode: allowed.
    • LuckPerms Mode: requires questrequestboards.questboard.place.
  • Edit Quest Boards
    Config key: Access.QuestBoard.Edit.RequirePermissionToEditQuestBoard
    Permission node: questrequestboards.questboard.edit
    • If the config flag is false → editing is allowed.
    • If true:
      • Fallback: permission ...questboard.edit can act as a bypass, otherwise the owner is allowed.
      • LuckPerms: requires ...questboard.edit (owner alone is not enough).
  • Manage Quest Treasury
    Config key: Access.QuestBoard.Treasury.RequirePermissionToManageTreasury
    Permission node: questrequestboards.questboard.treasury
    • If the config flag is false → treasury management is allowed.
    • If true:
      • Fallback: permission can bypass; otherwise owner is allowed.
      • LuckPerms: requires ...questboard.treasury.
  • Edit Quest Completion Commands
    Permission node: questrequestboards.questboard.commands
    Config keys: Access.QuestBoard.Commands.*
    • Enabled: master switch for completion command editing.
    • OpOnly: if true, OP is always allowed.
    • OpOnlyOverridesPermissions: if true and OpOnly is true, non-OP is blocked even if they have the permission.
    • AllowCreative: allow players in Creative mode.
    • AllowPermission: allow permission-based access via questrequestboards.questboard.commands (this is only effective when LuckPerms is available).
  • Complete Quests
    Permission node: questrequestboards.quest.complete
    • Fallback: allowed.
    • LuckPerms: requires questrequestboards.quest.complete.
  • Break Quest Boards
    Permission node: questrequestboards.questboard.break.any
    Config key: Access.QuestBoard.Break.AllowOpBreakAny
    • Owner can always break their own board.
    • Non-owner:
      • In LuckPerms/strict mode → require questrequestboards.questboard.break.any.
      • OP may be allowed based on AllowOpBreakAny (and/or fallback OP behavior).

▶️ 5) All permission nodes (LuckPerms / native permissions)

Root wildcard (everything):

  • questrequestboards.* — grants everything in this mod.

Request Board / Requests:

  • questrequestboards.requestboard.use — open/use Request Board UI (only enforced when RequirePermissionToUseRequestBoard is true in strict/LuckPerms mode).
  • questrequestboards.request.create — create requests.
  • questrequestboards.request.fulfill — fulfill/deliver requests.
  • questrequestboards.request.cancel.own — cancel your own requests (required in LuckPerms mode).
  • questrequestboards.request.cancel.any — cancel anyone’s requests.
  • questrequestboards.inbox.open.own — open your own board inbox (required in LuckPerms mode).
  • questrequestboards.inbox.open.any — open anyone’s board inbox.
  • questrequestboards.requestboard.break.any — break/remove any Request Board (non-owner).

Quest Board / Quests:

  • questrequestboards.questboard.use — open/use Quest Board UI (only enforced when RequirePermissionToUseQuestBoard is true in strict/LuckPerms mode).
  • questrequestboards.questboard.place — place Quest Boards (required in LuckPerms mode).
  • questrequestboards.questboard.edit — edit Quest Boards.
  • questrequestboards.questboard.treasury — manage treasury.
  • questrequestboards.questboard.commands — edit completion commands (only when AllowPermission is enabled AND LuckPerms is available).
  • questrequestboards.quest.complete — complete quests (required in LuckPerms mode).
  • questrequestboards.questboard.break.any — break/remove any Quest Board (non-owner).

Dev / Debug command:

  • questrequestboards.command.setboardowner — use the qrb_setboardowner debug command (only registered if Debug.DevCommandsEnabled is true).

Wildcard support (recommended):
The mod supports .* wildcards by expanding checks upward. Examples you can grant in LuckPerms:

  • questrequestboards.request.* — all request-related permissions (create/fulfill/cancel/etc.).
  • questrequestboards.inbox.* — all inbox permissions.
  • questrequestboards.questboard.* — all quest-board admin permissions.

Note: the wildcard format is prefix.* (not just prefix).

▶️ 6) Suggested LuckPerms presets (copy as “mental templates”)

Regular players (Request Boards gameplay)
Give these so players can actually use their own boards in LuckPerms mode:

  • questrequestboards.request.create
  • questrequestboards.request.fulfill
  • questrequestboards.request.cancel.own
  • questrequestboards.inbox.open.own

Optional (only if you set the “RequirePermissionToUse…” flags to true):

  • questrequestboards.requestboard.use

Helpers / Moderators (manage player boards)

  • questrequestboards.request.cancel.any
  • questrequestboards.inbox.open.any
  • questrequestboards.requestboard.break.any

Quest Staff (manage quest boards)

  • questrequestboards.questboard.place
  • questrequestboards.questboard.edit
  • questrequestboards.questboard.treasury
  • questrequestboards.questboard.commands (only if Commands.AllowPermission is enabled)
  • questrequestboards.questboard.break.any

Admins (everything)

  • questrequestboards.*

▶️ 7) Other important config sections (Limits / Fees / Requests / Quest rewards / Debug)

  • RequestBoard.Limits
    MaxBoardsPerPlayerAdventureEnabled and MaxBoardsPerPlayerAdventure limit the number of Request Boards a player can own only in ADVENTURE mode.
  • Fees (charged on request creation)
    • Enabled: turn fees on/off.
    • Mode: FLAT or PERCENT.
    • FlatCopper: flat fee in copper.
    • Percent: percentage fee (0-100).
    • Destination: BURN (removes coins) or TREASURY (stored in the mod treasury file).
  • Requests
    • DefaultDurationTicks: default expiration time for new requests.
    • DefaultMinDeliveryQty: minimum delivery quantity for a single delivery action.
    • MaxActivePerBoard: maximum active requests allowed per board.
    • AllowLooseMatch: allows LOOSE match mode to accept item IDs even if one is namespaced and the other is not (e.g. hytale:iron_ingot vs iron_ingot).
  • QuestRewards
    • DefaultPaymentMode: TREASURY (limited by stored funds) or MINT (server-minted).
    • DefaultRewardCopper: default reward value in copper.
  • Debug
    • Enabled: master debug switch.
    • DevCommandsEnabled: enables dev-only commands (like qrb_setboardowner).

▶️ 8) Default configuration file (as shipped)

{
  "schemaVersion": 1,
  "RequestBoard": {
    "Limits": {
      "MaxBoardsPerPlayerAdventureEnabled": false,
      "MaxBoardsPerPlayerAdventure": 1
    }
  },
  "Fees": {
    "Enabled": false,
    "Mode": "FLAT",
    "FlatCopper": 0,
    "Percent": 0.0,
    "Destination": "BURN"
  },
  "Requests": {
    "DefaultDurationTicks": 72000,
    "DefaultMinDeliveryQty": 1,
    "MaxActivePerBoard": 15,
    "AllowLooseMatch": false
  },
  "QuestRewards": {
    "DefaultPaymentMode": "TREASURY",
    "DefaultRewardCopper": 100
  },
  "Access": {
    "Provider": {
      "Enabled": true,
      "UseLuckPerms": false,
      "DefaultDenyWhenUnavailable": false
    },
    "Logging": {
      "LogChecks": false
    },
    "RequestBoard": {
      "Use": {
        "RequirePermissionToUseRequestBoard": false
      },
      "Create": {
        "OnlyOwnerCanCreateRequests": true
      },
      "Manage": {
        "OtherPlayersCanCancelRequests": false,
        "OtherPlayersCanOpenInbox": false,
        "OtherPlayersCanBreakBoard": false
      },
      "BreakConfig": {
        "AllowCreativeBreakAny": true,
        "AllowOpBreakAny": true
      }
    },
    "QuestBoard": {
      "Use": {
        "RequirePermissionToUseQuestBoard": false
      },
      "Edit": {
        "RequirePermissionToEditQuestBoard": true
      },
      "Commands": {
        "Enabled": true,
        "OpOnly": true,
        "OpOnlyOverridesPermissions": false,
        "AllowCreative": false,
        "AllowPermission": true
      },
      "Treasury": {
        "RequirePermissionToManageTreasury": true
      },
      "BreakConfig": {
        "AllowOpBreakAny": true
      }
    }
  },
  "Debug": {
    "Enabled": false,
    "DevCommandsEnabled": false
  }
}

📦 Summary

Quest & Request Boards is ideal if you want:

  • a player-driven commission system
  • structured server-side quests
  • full control through configuration
  • reliable behavior on large persistent servers

📌 Notes

  • Early versions may evolve quickly: please report bugs & feedback in the Comments section.
  • The mod do not adds default quests/request to obtain coins, to create the economy of your world is up to you.