Skip to main content

Numerical Storage

Official compatibility

ElementReference
TypeWriterRequired. Use the official TypeWriter release supported by the extension release.
Related extensionsInstall the related extensions listed on this page before using entries that depend on them.

Versatile system for managing currencies, mana pools, and upgraded bank accounts.

The Numerical Storage Extension provides a generic framework for managing numeric data. Use it to create custom currencies, RPG stat pools, or upgradable bank accounts with interest rates and GUI management.

This page documents the public artifact. The BTC custom artifact is maintained separately: it targets Java 25, uses the BTC MiniPlaceholders syntax and BTC GUI stack, and must not be mixed with the official public test server.

Features

  • Multi-Currency: Define unlimited unique storages (Gold, Tokens, Mana).
  • Leveling System: Players can upgrade their storage to increase capacity and interest rates.
  • Interest: Scheduled interest payouts based on Cron expressions.
  • Banking GUI: Complete interface for depositing, withdrawing, and upgrading.
  • Safe persistence: asynchronous asset I/O, per-artifact mutation locks, short-lived cache and schema migration.
  • Profile mode: optional profile-aware keys when the Profiles integration is installed.

User guide

  • 1. Configure Settings — Start with the configuration entry: definition. This defines global settings for the extension. → definition

Commands

All commands use the /ns prefix.

CommandDescriptionPermission
/ns open <id>Open storage menu.typewriter.ns.open
/ns add <id> <amount>Add balance (Console).typewriter.ns.add
/ns remove <id> <amount>Deduct balance (Console).typewriter.ns.remove
/ns level <id> <value>Set level (Console).typewriter.ns.level
/ns reset <id>Wipe data (Console).typewriter.ns.reset

Placeholders

Use these placeholders to display values. Replace <id> with your storage Definition ID.

PlaceholderDescription
%typewriter_ns_balance_<id>%Current balance.
%typewriter_ns_level_<id>%Current level index.
%typewriter_ns_capacity_<id>%Max balance capacity.
%typewriter_ns_interest_<id>%Current interest rate.
%typewriter_ns_interest_cooldown_<id>%Time until next payout.
%typewriter_ns_name_<id>%Display name.
%typewriter_ns_prefix_<id>%Currency prefix symbol.

Permissions

PermissionDescription
typewriter.ns.openOpen a numerical storage menu.
typewriter.ns.addAdd to a stored value.
typewriter.ns.removeRemove from a stored value.
typewriter.ns.resetReset a stored value.
typewriter.ns.levelManage storage levels.

Custom BTC variant

The custom artifact exposes the same values through MiniPlaceholders tags such as <ns_balance:bank> and <ns_level:bank>. Its Java 25 JAR, BTC GUI dependency and MiniPlaceholders engine must stay on the custom server only.

Dependencies

ExtensionRequiredUsage
GUI ExtensionRequiredMenu rendering and layout system.
PlaceholderAPIOptionalFor @Placeholder fields.
VaultOptionalDirect economy transactions in VAULT mode.

Data migration

New writes use a technical artifact path and JSON schema version 2. A legacy file based on the old semantic artifactId is backed up under backups/numericalstorage/ and migrated on first access. Back up the TypeWriter assets/ directory before upgrading.

Troubleshooting

The extension is not visible

Check that the installed release matches the supported TypeWriter release and that the related extensions listed in the compatibility section are present.

An entry is missing

In the Typewriter Web panel, use the Search bar or the + button to find or create the entry with its exact identifier. Entry IDs and field names are case-sensitive; do not translate them.

The entry saves but nothing happens

Check that the entry is connected to the trigger, command, objective, event, or menu interaction required by its type. Test with optional permissions and criteria removed, then add them back one at a time.

An integration does not work

Verify the dependency and version shown in the extension card, then check the server log for the first error. Do not replace a missing dependency with a similarly named plugin unless the extension source explicitly supports it.