EverGrims WerksTHE CROSSPLAY WERKSHOP

EverGrims Werks

Shop error reference

Public release 0.4.2 · Admin reference · Paper 26.3

Server shops, nested categories, rotating stock and quick selling, with support for EGW custom items and the optional Cannabis Dispensary.

Plugin identity: GrimsShop Java package: com.evergrims.grimsshop Declared main: com.evergrims.grimsshop.GrimsShopPlugin

Every reported occurrence goes through the plugin logger in this exact shared format:

[EGW-WATCH][plugin=GrimsShop][rank=3][severity=ERROR][code=purchase][version=0.4.2] Error: A purchase of diamond_block by Grim failed and was rolled back; nothing was charged or delivered

code is a machine-readable operation identifier, sanitised to letters, digits, underscore, dot and hyphen. version is the installed plugin version. Header fields never contain a line break or a ], so a record can never be split or forged from a message body. Throwable causes and suppressed rollback failures stay attached to the log record; a failure without an exception does not invent a stack trace.

The literal Error: marker is on every rank, because Server Watch only queues a log block that carries error evidence. It does not mean every report is rank 3.

Four ranks

RankNameMeaningExamples
1NOTICEAn expected state change or rejectionNone in 0.4.0 (the 0.1 catalogue move that used it is gone)
2WARNINGA recoverable problem; the shop keeps workingAn optional plugin that is installed and throwing, a Bedrock form that could not be built, an unreadable rotating-shops.yml during an ID check, 0.3.0 files 0.4.0 no longer reads, a broken message template, a currency with no economy provider, a levelled spawner its own plugin will not vouch for
3ERRORAn operation failed or was refusedA trade rolled back, a rotation check, a restock, an editor or admin-command write, a default set or import that could not be put in place (and was undone), a Geyser head write, unreadable stock or rotation state
4CRITICALStartup, shutdown, or a failed rollbackThe plugin cannot start, the first-start defaults could not be written, config.yml or the shop files are invalid, a swap of sections/ and shops/ could not be undone, a refund or stock restore failed, shop.db would not close, a menu would not close at shutdown

Ranks 1–2 use Java WARNING (Paper WARN) so the Paper watcher captures them; ranks 3–4 use SEVERE (Paper ERROR). Read the rank field rather than Paper's level: rank 1 is deliberately far less serious than rank 4.

Repeats

A repeated rank 1–3 fault is logged once and then counted. The next report after a five-minute quiet window carries (and N further occurrences since the previous line), so a player clicking a broken listing a hundred times produces a handful of lines rather than a hundred. Reports are throttled per code, and per listing where that matters, so two different broken listings never silence each other.

Rank 4 is never throttled. A failed refund or a failed stock restore can leave money or items in the wrong place, and every occurrence is its own incident that someone has to put right by hand.

/shop reload, /shop admin defaults, /shop admin import and in-game edits clear the error counters. Automatic reloads after content or gameplay plugins load preserve the counters, so a restart does not post the same errors twice. Changes to missing custom IDs and catalog warnings are reported separately.

Codes

RankCodeWhat happened
2audit-logThe trade went through but the audit row could not be written
2bedrock-iconsThe bundled Bedrock picture table could not be read
2catalog-warningThe shop files loaded with warnings; /shop validate lists them all. This includes a custom: id its plugin does not know, and one line per custom-item plugin that is not installed
2client-checkerGrimsClientChecker is installed and could not be read; chest menus are used
2config-readconfig.yml could not be read; the previous settings are kept
2currency-unavailableA currency has no working economy provider, so its listings show no buttons
2currency-vault-fallbackA VaultUnlocked currency was named but only classic Vault is registered
2floodgate-apiFloodgate is installed and could not say whether a player is on Bedrock
2legacy-layoutpresets/, shop-sections.yml or shops.yml from 0.3.0 is still in plugins/GrimsShop; 0.4.0 does not read them and moves or deletes nothing. Once per start
2levelled-spawner-unavailableA listing sells a GrimsSuperSpawners spawner that plugin will not vouch for, so its buy buttons are hidden
2plugin-item-unavailableAn EGW plugin that makes shop items (fishin:, discoveries:, chests:, backpacks:, jukeboxes:, wifi:, crops:, spawners:) is not running, so the buy buttons of every listing that sells one are hidden until it is. Once per plugin, naming one of its listings
2rotating-shops-readrotating-shops.yml could not be read during an ID clash check
2shutdown-rotation-taskThe rotation check task would not cancel at shutdown
2silkspawners-apiSilkSpawners is installed and could not be read; spawners trade as the shop holds them
2skull-readThe Geyser skull file could not be read, so heads may be written again
2staging-deleteA .staging-defaults or .staging-import folder in plugins/GrimsShop could not be deleted after the first start, /shop admin defaults or an import; it only holds staged copies and is cleared before its next use
2superspawners-apiGrimsSuperSpawners is installed and could not be read; its spawners are read from their own tags
2touch-form-simple / touch-form-modal / touch-form-promptA Bedrock form could not be built; that player gets the chest menu
2vault-currency-listVaultUnlocked's provider could not list its currencies
2message-templateA messages.yml template is not valid MiniMessage and is shown as plain text
3admin-commandA /shop admin command could not be written to disk; nothing changed
3catalog-left-outA section (sections/<id>.yml), its stock file (shops/<id>.yml) or one item had an error (an ID clash, a bad file name, a broken entry, an unreadable file, an unknown parent or currency) and was left out; everything else is open and /shop validate lists them. Nothing inside a section switched off with enabled: false is reported, not even a stock file that is not valid YAML, except a sub-section's own file that can't be read safely (not valid YAML, a key written twice, a bad or clashing name), since then its parent is unknown
3custom-items-reloadAn automatic reload after content or gameplay plugins loaded found errors in the shop files. The last good version keeps running.
3defaults-swap-failed / import-swap-failed/shop admin defaults or /shop admin import failed part-way while putting the new sections/ and shops/ in place; every step was undone and nothing changed. Rank 4 when undoing failed too: the old folders are then in the backups/ folder the report names
3editor-saveAn in-game edit could not be written; the files were rolled back
3menu-click / menu-closeA shop menu button or close handler threw
3purchase / saleA trade failed and was rolled back; nothing changed hands
3plugin-item-saleA purchase of an item an EGW plugin makes was refused before anything was charged: the plugin failed while making it (its exception is attached), no longer knows the id, or had stopped. Once per listing
3quick-sell / quick-sell-payoutQuick-sell failed; items were handed back or restored
3restockA restock failed part-way through
3rotating-shop-read / rotation-countdown / rotation-load / rotation-tickRotating shop state could not be read, loaded or advanced
3rotation-commandAn admin's advance/reset left the lineup unchanged
3shop-forgetA deleted shop's rotation state and stock could not be removed
3sections-folderThe sections/ folder could not be listed, so every section is left out until it is readable
3shops-folderThe shops/ folder could not be listed, so every section's items are left out until it is readable
3skull-write / skull-write-nowShop heads could not be written to Geyser
3stock-readA listing's remaining stock could not be read, so it counts as sold out
3superspawner-generateSpawner listing generation was aborted; no listings were saved
4catalog-invalid / config-invalidThe shop stays closed until the files are fixed and /shop reload is run
4defaults-write-failedThe first start (no sections/ and no shops/) could not write the every-block set; the shop opens with no sections. Fix the cause and restart, or use /shop admin defaults
4database-closeshop.db would not close; stock and rotation state may not be flushed
4menu-shutdown-close / shutdown-menusA menu would not close at shutdown; what it held may not have been returned
4messages-bundledThe built-in messages.yml could not be read from the jar
4quick-sell-rollbackA failed payout could not be taken back; the player keeps money and items
4refundA player could not be refunded after a failed purchase
4shutdown-skulls / skull-write-shutdownThe pending Geyser head batch was lost at shutdown
4startupGrimsShop could not start and disabled itself
4stock-rollbackStock could not be restored after a failed purchase; the count is now too low

Coverage and boundaries

Commands, menu clicks and close handlers, scheduled rotation checks, every trade path, quick-sell, the in-game editor, the config and catalogue loaders, the Geyser head writer and the optional-plugin hooks (the EGW plugins that make shop items among them) have ranked failure boundaries. Shutdown attempts every step even after one fails, and reports each failure separately.

These are normal states, not hidden failures, and are deliberately not reported:

  • An optional plugin that is simply not installed — SilkSpawners, GrimsSuperSpawners, GrimsClientChecker,

Missing optional integrations such as Floodgate, Geyser, Vault or Packforge are not themselves errors. An installed integration throwing an error is reported. A shop entry naming an unavailable custom-item provider produces a catalog warning.

  • A custom item whose provider is installed but still loading stays pending until the provider is ready.

it registers its items service, an EGW plugin that enables after GrimsShop while the server starts). It is hidden, /shop validate counts it, and the shop reloads by itself once the plugin is ready; only an id that still does not resolve after that is a warning. An EGW plugin still not enabled at the first tick is one catalog-warning.

  • Every crops: item while GrimsCrops is enabled with no item table for other plugins (0.15.4 or older, or its service

not registered): one catalog-warning for all of them, not an error.

  • A player typing an amount that is not a number, lacking permission, not holding enough of an item, or not

being able to afford something. These are answered to the player.

  • A mob or level GrimsSuperSpawners refuses during generation. That is a refusal, counted in the summary the

admin who ran the command reads; a provider that breaks or returns the wrong item is rank 3 instead.

  • Asking an item's data container for a key as the wrong type, which is how each type is tried in turn.
  • Importer findings. /shop admin import has its own report of everything skipped or changed, shown to the

admin running it, because an import is a one-off review rather than a running fault.

Hard process termination, a failure before the plugin can initialise, server log filters and other plugins' failures fall outside these boundaries. Untagged Paper reports must keep a fallback policy in Nixie rather than being discarded.

Register the new main class

The package changed in 0.2.4, so the identity has to be re-registered or Server Watch stops attributing this plugin's errors. As Nixie's configured owner, in the home Discord:

/project edit name:GrimsShop main:com.evergrims.grimsshop.GrimsShopPlugin

Use /project add with the same fields if it is not registered yet. Edit keeps the old main class by default, so servers still on 0.2.3 stay recognised. Then run /nixie watch sync in Minecraft or nixie watch sync on the console, and check /project status.

The local fallback identity, for a server that is not using the central registry, is in ASKNIXIE-IDENTITY.yml. Merge it into the existing server-watch.plugin-identities block rather than replacing the other entries.

Enable every alert rank

Nixie alerts ranks 3–4 by default. To include the quieter ones:

/serverwatch rank rank:1 enabled:True /serverwatch rank rank:2 enabled:True /serverwatch ranks

These are owner-only global switches. Server Watch also has to be enabled, the server linked and its watch forum configured, and the new main class accepted. This release changes nothing in your registry or alert settings by itself.

What has been checked

DiagnosticsTest asserts every rank against the exact ENVELOPE pattern from Nixie's own watch_severity.py, including that rank and severity agree (Nixie discards a record where they do not), that the cause stays attached, that a forged header in a message, code or version cannot escape its field, that repeats are counted rather than flooded, and that rank 4 always repeats. The hook and spawner-generation tests assert their real records carry the right rank and code.

This proves the format, the rank routing and the throttle locally. It does not prove delivery on a deployed server: Nixie's own queue bounds, expiry, deduplication, rank switches and network availability still govern whether a report reaches Discord, and the full plugin log remains the evidence source.