skyhelper-networth
v2.6.1
Published
SkyHelper's Networth Calculation for Hypixel SkyBlock
Maintainers
Readme
SkyHelper-Networth
SkyHelper's Networth Calculation as a Node.js module to calculate a player's SkyBlock networth by using their profile data provided by the Hypixel API.
Installation
npm install skyhelper-networthCore Concepts
📦 Key Classes
ProfileNetworthCalculator: Handles networth calculation for player's profile.GenericItemNetworthCalculator: Calculates networth for individual items.NetworthManager: Central class for managing networth calculations (singleton).UpdateManager: Manages periodic updates for items, prices and the networth package itself (singleton).
📄 Core Interfaces
NetworthOptions: Configuration for networth calculationsNetworthResult: Result structure for networth calculationsItem: Detailed representation of an in-game item
Quick Start
import { ProfileNetworthCalculator } from 'skyhelper-networth';
// Prepare input data
const profile = // https://api.hypixel.net/#tag/SkyBlock/paths/~1v2~1skyblock~1profile/get - profile.members[uuid]
const museumData = // https://api.hypixel.net/v2/skyblock/museum - museum.members[uuid]
const bankBalance = profile.banking.balance;
const profileData = profile.members[uuid];
// Initialize the NetworthManager
const networthManager = new ProfileNetworthCalculator(profileData, museumData, bankBalance);
// Calculate profile networth
const networth = await networthManager.getNetworth();
console.log(networth);The data structure of the output from getNetworth can be found at Type Definitions section.
Class Documentation
📊 ProfileNetworthCalculator
Handles player profile calculations
Creation
new ProfileNetworthCalculator(profileData: object, museumData?: object, bankBalance?: number)
fromPreParsed(profileData: object, items: Items, bankBalance: number): ProfileNetworthCalculator;Calculation Methods
getNetworth(options?: NetworthOptions): Promise<NetworthResult>
getNonCosmeticNetworth(options?: NetworthOptions): Promise<NetworthResult>Example Usage
const networthManager = new ProfileNetworthCalculator(profileData, museumData, bankBalance);
const networth = await networthManager.getNonCosmeticNetworth({ prices: customPrices });
console.log(networth.types.inventory.total); // Total value of player's inventory
const nonCosmeticNetworth = await networthManager.getNonCosmeticNetworth();
console.log(nonCosmeticNetworth.networth); // Total value of player's non-cosmetic items🔍 ItemNetworthCalculator
Item-specific calculation
Constructor
new ItemNetworthCalculator(item: object)Methods
getNetworth(options?: NetworthOptions): Promise<Item>
getNonCosmeticNetworth(options?: NetworthOptions): Promise<Item>Example
const itemCalculator = new ItemNetworthCalculator(item);
const itemValue = await itemCalculator.getNetworth({ prices: newPrices });
console.log(itemValue.price); // Item's calculated value🧰 NetworthManager
Manages global configuration and item caching
Constructor
new NetworthManager(options?: NetworthManagerOptions)Configuration Options
Each option can be set and obtained using the corresponding set and get methods.
| Method | Property | Type | Default | Description |
| ---------------------- | ----------------- | --------- | ---------------- | ---------------------------------------------------------------------------------- |
| setCachePrices() | cachePrices | boolean | true | Whether to cache the prices for time after fetching them or fetch them every time. |
| setPricesRetries() | cachePricesTime | number | 300000 (5m) | The amount of time to cache the prices in milliseconds. |
| setCachePricesTime() | pricesRetries | number | 3 | The amount of retries to fetch the prices when failing to fetch them. |
| setItemsRetries() | itemsRetries | number | 3 | The amount of retries to fetch the items when failing to fetch them. |
| setItemsInterval() | itemsInterval | number | 43200000 (12h) | The interval to fetch the items from the Hypixel API in milliseconds. |
| setOnlyNetworth() | onlyNetworth | boolean | false | Whether to only return the total networth or the items as well. |
| setSortItems() | sortItems | boolean | true | Whether to sort items by price. |
| setStackItems() | stackItems | boolean | true | Whether to stack items with the same name and price. |
| setIncludeItemData() | includeItemData | boolean | false | Whether to include the item data as a property in the item object. |
Additional Features
Price Management
import { getPrices } from 'skyhelper-networth';
// Get latest prices with caching
const prices = await getPrices(true);
// Manual cache refresh
networthManager.setCachePrices(false);Update Management
const updateManager = new UpdateManager();
updateManager.setInterval(300000); // Check updates every 5m
updateManager.disable(); // Stop automatic checksType Definitions
📜 NetworthOptions
| Property | Type | Default | Description |
| ----------------- | --------- | -------- | ---------------------------------------------------------------------------------- |
| prices | object | Prices | A prices object that includes item prices. |
| cachePrices | boolean | true | Whether to cache the prices for time after fetching them or fetch them every time. |
| pricesRetries | number | 3 | The amount of retries to fetch the prices when failing to fetch them. |
| onlyNetworth | boolean | false | Whether to only return the total networth or the items as well. |
| includeItemData | boolean | false | Whether to include the item data as a property in the item object. |
| sortItems | boolean | true | Whether to sort items by price. |
| stackItems | boolean | true | Whether to stack items with the same name and price. |
📜 NetworthResult
interface NetworthResult {
networth: number;
unsoulboundNetworth: number;
noInventory: boolean;
isNonCosmetic: boolean;
personalBank: number;
purse: number;
bank: number;
types: Record<InventoryType, Inventory>;
}
type InventoryType = 'armor' | 'equipment' | 'wardrobe' | ...;
type Inventory = {
total: number;
unsoulboundTotal: number;
items: Array<Item>;
};📦 Item Structure
interface Item {
name: string;
price: number;
soulbound: boolean;
cosmetic: boolean;
calculation: Calculation[];
// ... additional properties
}Contribution
Contributions welcome! Please follow the project's code style and add tests for new features.
git clone https://github.com/Altpapier/SkyHelper-Networth.git
npm install
npm test