Numerical Storage
Official compatibility
| Element | Reference |
|---|---|
TypeWriter | Required. Use the official TypeWriter release supported by the extension release. |
| Related extensions | Install 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.
-
Source Code — View source on GitHub.
-
Official release v0.10 — Download the published JAR.
-
Definition — Define currency rules, interest, and limits.
- Bank Levels — Configure upgrade tiers and capacities.
- Menu Config — Customize the banking interface.
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.
| Command | Description | Permission |
|---|---|---|
/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.
| Placeholder | Description |
|---|---|
%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
| Permission | Description |
|---|---|
typewriter.ns.open | Open a numerical storage menu. |
typewriter.ns.add | Add to a stored value. |
typewriter.ns.remove | Remove from a stored value. |
typewriter.ns.reset | Reset a stored value. |
typewriter.ns.level | Manage 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
| Extension | Required | Usage |
|---|---|---|
| GUI Extension | Required | Menu rendering and layout system. |
| PlaceholderAPI | Optional | For @Placeholder fields. |
| Vault | Optional | Direct 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.