Skip to content

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"

HotBunny Interactive Entertainment Inc.