ForgeCraftPLUGIN WIKISDocumentationSupport ↗
Support

Operator recovery guide

ForgeMarket · 0.1.2 preview

Both editions use the same recovery rules. A hold is a request to inspect the outcome, not evidence that the action failed. Never automatically resolve every hold the same way.

When an operation stops halfway

  1. Stop further trading for the affected player while investigating. Take a stopped-server backup of the plugin data plus matching world/player files. Preserve logs and the operation ID.
  2. Run /fmarket recover as an operator or from the console. It lists the operation kind, ID, player UUID and amount/quantity. PREPARED/CLAIMING operations found on startup become REVIEW.
  3. Inspect the player's inventory, corresponding logs and—if applicable—the external provider's transaction ledger. Compare the operation quantity with the observed result. Do not guess from the player's current wallet alone.
  4. Resolve that ID once using the table below. The resolution is audited. Reusing a resolved ID is rejected.
  5. Confirm the player's items, wallet, stock and delivery inbox now agree. Record the evidence staff used.
Kind occurred means Resolution effect
deposit The specified items really left the depositing player's inventory Add the reserved quantity to the offer
deposit + not-occurred The items never left the inventory Cancel reservation; no market stock is created
delivery The reserved claim stack really arrived in the player's inventory Remove that quantity from the inbox record
delivery + not-occurred The player did not receive the reserved stack Make the parcel claimable again
Bank DEPOSIT External economy successfully debited the player Credit the internal wallet
Bank DEPOSIT + not-occurred External debit did not happen Cancel with no internal credit
Bank WITHDRAW External economy successfully credited the player Finish the already-reserved internal debit
Bank WITHDRAW + not-occurred External credit did not happen Refund the internal wallet reservation

Examples:

/fmarket recover
/fmarket resolve deposit <transfer-uuid> occurred
/fmarket resolve delivery <numeric-parcel-id> not-occurred
/fmarket resolve bank <transfer-uuid> occurred
/fmarket audit

occurred always refers to the physical/external action, not whether the plugin showed a success message. If a provider reports a partial or incorrect amount, or evidence is inconclusive, leave the hold in place until staff reconcile the external state. The plugin cannot infer that safely. A wallet at its maximum can also need capacity freed before reconciliation.

Backup and migration

  • Use full stop/start, never Bukkit /reload or plugin hot-loading.
  • Back up all of plugins/ForgeMarket/, including SQLite sidecar files if present, and matching world/player data from the same stopped state.
  • Do not restore only the wallet database to an earlier time while keeping newer player inventory files. That can resurrect spent money or claimed items.
  • Test restoring your backup on an isolated clone. Normal restart checks do not establish arbitrary crash or disk-failure recovery.
  • Free/Premium share their data directory and schema. Replace the JAR; retain the data. Keep the previous JAR plus the matching data backup for rollback.
  • Protect forgemarket.admin. Credits grants and manual resolutions alter the economy.

Current boundaries

Local SQLite operations are synchronized and run on the server/player callback thread. High traffic or slow disks can delay gameplay; this build has not been stress-qualified for large economies. One plugin process owns one database. No cross-server sync, SQL replication, automatic provider retry, partial external transfer reconciliation or chargeback system is provided.

Offer browsing returns up to 1,000 matching active offers; use search to narrow large catalogues. Inbox pages expose the first 1,000 pending records, with later records becoming accessible as earlier ones are claimed. Each offer holds at most 1,000,000 items. A checkout line accepts at most 2,304 items. A wallet caps at 1,000,000,000,000.00 credits; input fields accept at most 12 whole-number digits and two fractional digits. Reviews query up to 50 records and display the first eight; comprehensive review moderation/pagination is not included yet.

Item transfers are restricted to living Survival/Adventure players. Existing protection plugins do not control a virtual marketplace's transactions automatically; there is no world-block shop or protection integration to configure here.

Search all plugin wikis.