diff --git a/README.md b/README.md index 0d1e264..df38194 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,399 @@ # Bot-Data -Data used by the SkyKings Public Discord bot. + +Data used by the [SkyKings](https://discord.gg/skykings) Public Discord bot. + +All data is stored as JSON and is validated by `check.py` on every commit. + +## Repository Structure + +``` +Bot-Data/ +├── skyblock/ # Hypixel SkyBlock game data +│ ├── networth/ # Data used for networth calculations +│ └── *.json +├── misc/ # Miscellaneous bot data (emojis, aliases, etc.) +├── check.py # JSON validation script +└── requirements.txt # Python dependencies for check.py +``` + +--- + +## `skyblock/` + +### `accessories.json` + +A map of accessory/talisman item IDs to their rarity and upgrade information. + +```json +{ + "": { + "rarity": "common | uncommon | rare | epic | legendary | ...", + "upgrade": " | null" + } +} +``` + +The `upgrade` field points to the next tier of the same accessory family, or `null` if there is no upgrade. + +--- + +### `bestiary.json` + +Bestiary mob data organised by location. Each mob entry contains the maximum kill-count level and whether the mob is a boss. + +```json +{ + "mobs": { + "": { + "": { + "maxLevel": | null, + "boss": + } + } + } +} +``` + +--- + +### `bit-prices.json` + +Prices (in bits) for items available in the Community Shop. The special `_enchants` key holds a sub-object of enchant name → bit cost mappings. + +```json +{ + "": , + "_enchants": { + " ": + } +} +``` + +--- + +### `crimson.json` + +Crimson Isle Dojo data. Currently stores the minimum point thresholds required to achieve each belt rank. + +```json +{ + "dojo_belts": { + "": + } +} +``` + +--- + +### `dungeons.json` + +Cumulative XP required to reach each Catacombs level. The array is zero-indexed, so index `n` holds the total XP needed for level `n`. + +```json +{ + "catacombs": [, , ...] +} +``` + +--- + +### `enchants.json` + +Metadata for every SkyBlock enchantment. + +```json +{ + "": { + "name": "", + "id": "", + "max_table": , + "max": , + "stacking": true, // present only when the enchant is a stacking enchant + "ultimate": true, // present only when the enchant is an ultimate enchant + "upgrade_stones": { + "": "" // present only for levels that require an upgrade stone + } + } +} +``` + +--- + +### `forge.json` + +Forge recipes for the Dwarven Mines / Crystal Hollows forge. + +```json +{ + "": { + "hotm": , + "time": , + "collections": { // optional – collection requirements + "": + }, + "ingredients": { + "": + } + } +} +``` + +--- + +### `garden.json` + +Data related to the Garden island. + +- **`matter`** – Crop item IDs and their equivalent Garden Matter value (used for composter calculations). +- **`fuel`** – Fuel item IDs and their equivalent composter fuel value. + +```json +{ + "matter": { "": }, + "fuel": { "": } +} +``` + +--- + +### `gemstones.json` + +Stats granted by each gemstone type at every quality tier and slot position (0–6, where position index maps to the slot type used by the SkyBlock API). + +```json +{ + "": { + "name": "", + "color": "", + "stats": { + "": { + "": [, , ..., ] + } + } + } +} +``` + +`null` in a stat array means the gemstone cannot be placed in that slot type. + +--- + +### `hotm.json` + +Cumulative XP required to reach each Heart of the Mountain (HotM) tier. Index `n` holds the total XP needed for tier `n`. + +```json +{ + "experience": [, , ...] +} +``` + +--- + +### `lily_weight.json` + +Constants used for the Lily weight formula. + +- **`dungeons`** – Per-floor completion buffs and a full catacombs XP table used to convert raw XP to level. +- **`skills`** – Per-skill weight constants. +- **`slayer`** – Per-slayer weight constants. + +--- + +### `minions.json` + +The number of unique minion recipes needed to unlock each additional minion slot. + +```json +{ + "slot_unlocks": [, , ...] +} +``` + +--- + +### `pets.json` + +Cumulative XP required to reach each pet level. Index `n` holds the total XP needed for level `n + 1`. + +```json +{ + "levels": [, ...] +} +``` + +--- + +### `rarities.json` + +Minecraft formatting colour codes for each item rarity. + +```json +{ + "": { + "color": "" + } +} +``` + +--- + +### `reforges.json` + +Maps each reforge name to the item ID of the reforge stone required to apply it. + +```json +{ + "": "" +} +``` + +--- + +### `skills.json` + +Cumulative XP required to reach each level for different skill categories. + +- **`runecrafting`** – XP table for the Runecrafting skill (max level 25). +- **`skills`** – XP table used by all standard skills (Farming, Mining, Combat, etc.). +- **`dungeoneering`** *(if present)* – XP table for Dungeoneering. + +```json +{ + "": [, , ...] +} +``` + +--- + +### `slayers.json` + +XP thresholds and XP-per-kill values for each slayer type. + +```json +{ + "": { + "levels": [, , ...], + "xp_gain": [, , ...] + } +} +``` + +--- + +### `weight.json` + +Constants used by the Senither weight formula. + +- **`dungeon_groups`** – Weight multipliers for the Catacombs dungeon and each class. +- **`skill_groups`** – Per-skill weight constants including the exponent, divider, and max level. + +```json +{ + "dungeon_groups": { "": }, + "skill_groups": { + "": { + "exponent": , + "divider": , + "maxLevel": + } + } +} +``` + +--- + +## `skyblock/networth/` + +Data used when calculating a player's networth. + +### `allowed_enchants.json` + +List of enchantment IDs whose levels are factored into an item's networth value. + +```json +{ "data": ["", ...] } +``` + +### `blocked_enchants.json` + +Per-item overrides listing enchantment IDs that should **not** count toward networth for that specific item. + +```json +{ "": ["", ...] } +``` + +### `essence_tiers.json` + +Essence costs (in units) for each upgrade tier of essence-upgradeable items. + +```json +{ "tiers": [, , ...] } +``` + +### `price_overrides.json` + +Manual price overrides for specific items (keyed by item ID). An empty object means no overrides are currently set. + +```json +{ "": } +``` + +--- + +## `misc/` + +### `enrichment-emojis.json` + +Discord emoji strings for each accessory enrichment stat, used in bot responses. + +```json +{ "": "" } +``` + +### `guild.json` + +Guild XP requirements per level. The `xpreq` array is zero-indexed — index `n` holds the XP needed to advance from level `n` to level `n + 1`. + +```json +{ "xpreq": [, ...] } +``` + +### `item-id-aliases.json` + +Maps legacy or alternative SkyBlock item IDs to their canonical API ID. Used to normalise item IDs that may appear in different forms across the API. + +```json +{ "": "" } +``` + +### `profile-emojis.json` + +Discord emoji strings (or Unicode characters) for each SkyBlock profile fruit icon. + +```json +{ "": "" } +``` + +### `rarity-emojis.json` + +Discord emoji strings for each item rarity tier. + +```json +{ "": "" } +``` + +--- + +## Validation + +Run the included `check.py` script to verify that all JSON files parse correctly: + +```bash +pip install -r requirements.txt +python check.py +``` + +## Contributing + +If you spot missing or incorrect data, please open an issue or submit a pull request. When adding new entries make sure to run `check.py` to confirm your changes are valid JSON.