SharedStorage
The SharedStorage namespace provides persistent key-value storage shared between all mods. Data persists across game sessions. All mods read and write to the same key space.
Use descriptive key names prefixed with your mod ID to avoid collisions (e.g. "mymod.leaderboard").
For mod-private persistent storage, use Storage.
No permission required.
Import
typescript
import { SharedStorage } from "@hotbunny/hackhub-content-sdk";Methods
SharedStorage.get<T>(key)
Get a shared value by key. Returns undefined if not found.
Returns: T | undefined
typescript
const board = SharedStorage.get<LeaderboardEntry[]>("mymod.leaderboard");SharedStorage.set(key, value)
Set a shared value by key. Value must be JSON-serializable.
typescript
SharedStorage.set("mymod.leaderboard", [
{ name: "Player1", score: 100 },
{ name: "Player2", score: 85 },
]);SharedStorage.remove(key)
Remove a shared key.
typescript
SharedStorage.remove("mymod.leaderboard");SharedStorage.getAll()
Get all shared key-value pairs.
Returns: Record<string, any>
Use Cases
Cross-mod data sharing
typescript
// Mod A: Publish data
SharedStorage.set("economy-mod.exchangeRate", 1.25);
// Mod B: Read it
const rate = SharedStorage.get<number>("economy-mod.exchangeRate");Shared leaderboards
typescript
const key = "mymod.leaderboard";
const board = SharedStorage.get<{ name: string; score: number }[]>(key) || [];
board.push({ name: "NewPlayer", score: 50 });
board.sort((a, b) => b.score - a.score);
SharedStorage.set(key, board.slice(0, 10));Key Naming Convention
Since all mods share the same key space, use a prefix to avoid collisions:
{mod-id}.{key-name}Examples:
"my-quest-mod.completedQuests""economy-mod.exchangeRate""social-mod.friendsList"
