diff --git a/CHANGELOG.md b/CHANGELOG.md index d3e3a86b..464026aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,48 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.0.0](https://github.com/zikeji/node-hypixel/compare/v2.2.3...v3.0.0) (2021-03-22) + + +### ⚠ BREAKING CHANGES + +* separate request portion of client and add denoify port + +### Features + +* add denoify in prep to properly add Deno support ([3315eb4](https://github.com/zikeji/node-hypixel/commit/3315eb4882a464265e9bd2fd700701bf37eb065c)) +* add NBT deno port for TransformItemData ([610aa32](https://github.com/zikeji/node-hypixel/commit/610aa32049715acaa4bb8d7e2db11752f29f5851)) +* ignore bulky files in distribution ([ecbb545](https://github.com/zikeji/node-hypixel/commit/ecbb545aef7f93080de1ec13203ba67bf753eeb0)) +* separate request portion of client and add denoify port ([687acb0](https://github.com/zikeji/node-hypixel/commit/687acb056f03f5cc59548bba3bf2295a938ad603)) +* update release workflow ([72265c2](https://github.com/zikeji/node-hypixel/commit/72265c2010b76b3704bae7f6bc253d42d3282663)) + + +### Bug Fixes + +* add try/catch to solve issue with nbt_parser ([08228b7](https://github.com/zikeji/node-hypixel/commit/08228b7a260281d7767c22f5f82f07eba32292b3)) +* commit deno test files ([389dcad](https://github.com/zikeji/node-hypixel/commit/389dcadab7bf5e5e9b90908a5d45264a65a70ae1)) +* fix incorrect merge causing issues ([70ba731](https://github.com/zikeji/node-hypixel/commit/70ba7311ae9e12cd318d5a8c83c6ec0824d64835)) + + +### Miscellaneous Chores + +* **deps:** update prismarine-nbt dev dependency ([6301739](https://github.com/zikeji/node-hypixel/commit/6301739b1f8383673c701a625a10c33fdbbe227f)) + + +### Tests + +* **coverage:** ignore deno ports for coverage ([7a16dda](https://github.com/zikeji/node-hypixel/commit/7a16dda1d81de5b5973ef0b456fd158c2e1049eb)) +* **fix:** remove unused import ([298bf98](https://github.com/zikeji/node-hypixel/commit/298bf981dcee1d35b1bb90c28865c23715ab8a8b)) +* refer to previous ([50e1509](https://github.com/zikeji/node-hypixel/commit/50e15099f2bda10bc13f19489a3bbc8c8febe916)) +* remove globals.d.ts from test files ([8ce8a07](https://github.com/zikeji/node-hypixel/commit/8ce8a075dba1c05acb31731f862e051a23225f70)) + + +### Documentation + +* restore changelog ([93efe02](https://github.com/zikeji/node-hypixel/commit/93efe0246f2437dfa2cf7c3db4649d042c0365a3)) +* **helpers:** update minecraft item data docs for deno ([8fda927](https://github.com/zikeji/node-hypixel/commit/8fda927eb8ad2b90bc577a799580f7ad3ee1aed8)) +* **helpers:** update prismarine nbt line ([fb0535d](https://github.com/zikeji/node-hypixel/commit/fb0535d4dd66d0ff43cfcb800f0b10426214d0bc)) + ### [2.2.3](https://github.com/zikeji/node-hypixel/compare/v2.2.2...v2.2.3) (2021-03-19) diff --git a/deno_dist/CHANGELOG.md b/deno_dist/CHANGELOG.md new file mode 100644 index 00000000..d3e3a86b --- /dev/null +++ b/deno_dist/CHANGELOG.md @@ -0,0 +1,597 @@ +# Changelog + +All notable changes to this project will be documented in this file. See +[Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +### [2.2.3](https://github.com/zikeji/node-hypixel/compare/v2.2.2...v2.2.3) (2021-03-19) + + +### Bug Fixes + +* **deno:** rework imports and change stuff around to get Deno working ([7d2e016](https://github.com/zikeji/node-hypixel/commit/7d2e0168f71307a28fa3bca87579ac52a91c4ee6)) + +### [2.2.2](https://github.com/zikeji/node-hypixel/compare/v2.2.1...v2.2.2) (2021-03-19) + + +### Bug Fixes + +* **deno:** add deno-types comments ([cd97322](https://github.com/zikeji/node-hypixel/commit/cd9732245a65d85f1c1b9464666f16b9345a5f67)) + +### [2.2.1](https://github.com/zikeji/node-hypixel/compare/v2.2.0...v2.2.1) (2021-03-19) + + +### Bug Fixes + +* **deno:** add mod.ts for deno ([3a024f0](https://github.com/zikeji/node-hypixel/commit/3a024f04c880ea039d513bf5a41d79f2ad283d4f)) +* **deno:** export all with extension in mod.ts for correct resolution ([16b6839](https://github.com/zikeji/node-hypixel/commit/16b68390cb31d9d36ebffaa17c156db18ac2207a)) + +## [2.2.0](https://github.com/zikeji/node-hypixel/compare/v2.1.2...v2.2.0) (2021-03-19) + + +### Features + +* **helpers:** add SkyWars helpers for level and prestige ([15be627](https://github.com/zikeji/node-hypixel/commit/15be62719ac88af96f0342ad86e065f98a5915fc)), closes [#203](https://github.com/zikeji/node-hypixel/issues/203) + + +### Documentation + +* **helpers:** add SkyWars helpers documentation ([ed80716](https://github.com/zikeji/node-hypixel/commit/ed807166c38206f21f25daf3c67cadb4e27ddd46)) +* fix typo in bedwars info ([db7ab77](https://github.com/zikeji/node-hypixel/commit/db7ab77f6e5a11ca1a95a3770f44537a4c246dfd)) +* optimize webp examples ([37abc23](https://github.com/zikeji/node-hypixel/commit/37abc2300d1e692d75e951670e6925f227e7dd93)) + +### [2.1.2](https://github.com/zikeji/node-hypixel/compare/v2.1.1...v2.1.2) (2021-03-19) + + +### Miscellaneous Chores + +* update dependencies ([6d787bf](https://github.com/zikeji/node-hypixel/commit/6d787bf1f5750cfcb57aa9749b3ad3e1edb91e89)) +* update dev dependencies ([8503b74](https://github.com/zikeji/node-hypixel/commit/8503b7467a5a08fa1e9bee888b1f1923c7493e76)) + + +### Documentation + +* add deno link ([b58124d](https://github.com/zikeji/node-hypixel/commit/b58124d21d96c185639bc15585a8b7e0b8167602)) + +### [2.1.1](https://github.com/zikeji/node-hypixel/compare/v2.1.0...v2.1.1) (2021-01-12) + + +### Miscellaneous Chores + +* **semantic-releases:** add new releaseRules ([b726ef8](https://github.com/zikeji/node-hypixel/commit/b726ef8f30aee457948360d25c598c66989a08e2)) + + +### Documentation + +* **readme:** add Discord link to README ([0c583aa](https://github.com/zikeji/node-hypixel/commit/0c583aa884998a29b1ed8ed10f21ca99e6613001)) +* **vuepress:** add Discord link to navigation bar of documentation site ([51d1abb](https://github.com/zikeji/node-hypixel/commit/51d1abb1c561ef241f03d4951fe3c159c365271f)) + +## [2.1.0](https://github.com/zikeji/node-hypixel/compare/v2.0.1...v2.1.0) (2021-01-12) + + +### Features + +* **docs:** add algolia docsearch ([3bf266a](https://github.com/zikeji/node-hypixel/commit/3bf266a84bae59374b99e3beeb7e3d6d33c28a07)) + +### [2.0.1](https://github.com/zikeji/node-hypixel/compare/v2.0.0...v2.0.1) (2021-01-09) + + +### Bug Fixes + +* **docs:** don't include files, only a single entry point ([e734f75](https://github.com/zikeji/node-hypixel/commit/e734f75da53e0aa8410278c04d729309bda41e07)) + + +### Documentation + +* **readme:** add some more information to readme ([685daf1](https://github.com/zikeji/node-hypixel/commit/685daf1a1887660b7bb2cb429233e8a0129def12)) +* **readme:** update general information in readme header ([49d2227](https://github.com/zikeji/node-hypixel/commit/49d22273e9de7b001378786bd92790e6c4330df9)) +* add category for new helpers ([ca4c2d3](https://github.com/zikeji/node-hypixel/commit/ca4c2d304b7f2fe52f0aa81b6cb64b74ab3d3f3f)) +* add more documentation to methods ([a42eeff](https://github.com/zikeji/node-hypixel/commit/a42eeffd9dc5e54e4f10384e6d9cb4a04212b9df)) +* include full reflection in navbar title ([cbd42e8](https://github.com/zikeji/node-hypixel/commit/cbd42e88905315642226533ae99c226db4e3fddb)) +* remove no-inherit plugin ([ce0faba](https://github.com/zikeji/node-hypixel/commit/ce0faba50cbc508ee57afe94732330df4501361e)) +* remove theme as it was removed in latest release ([8ba4e4b](https://github.com/zikeji/node-hypixel/commit/8ba4e4bf5950f77c898bbb2ed513583426db938e)) +* update broken links ([8a2da51](https://github.com/zikeji/node-hypixel/commit/8a2da5119fdbdb65773a40fad3713822499109a4)) +* update to newer plugin options for cleaner output ([85f8333](https://github.com/zikeji/node-hypixel/commit/85f8333c207c10fc8a8dac23f79cf2a178362f99)) + + +### Miscellaneous Chores + +* **deps:** update out of date dependencies, resolve migration changes in vuepress-theme-mrhope ([ca71397](https://github.com/zikeji/node-hypixel/commit/ca713971e4d0e9fd32453c4db8b005d7627bdec6)) + +## [2.0.0](https://github.com/zikeji/node-hypixel/compare/v1.20.0...v2.0.0) (2021-01-08) + + +### ⚠ BREAKING CHANGES + +* issue with typedoc generation vuepress build + +### Bug Fixes + +* issue with typedoc generation vuepress build ([17e37c3](https://github.com/zikeji/node-hypixel/commit/17e37c3480c209c19d751af40218d900359cadc7)) + + +### Documentation + +* **dev:** resolve issue rebuilding in a saturated environment ([bb7fe85](https://github.com/zikeji/node-hypixel/commit/bb7fe85645c77f731964be4c61b7ebef14ea87a3)) + +## [1.20.0](https://github.com/zikeji/node-hypixel/compare/v1.19.0...v1.20.0) (2021-01-08) + + +### Features + +* **helpers:** add SkyBlock skills helper ([2ec2d34](https://github.com/zikeji/node-hypixel/commit/2ec2d34426743ee8b9d02084a7e42c7d37064e2b)) + + +### Documentation + +* **helpers:** add documentation for the profile skills helper ([b5427d9](https://github.com/zikeji/node-hypixel/commit/b5427d959098d86056c5032c1fe91a13295154e7)) +* **readme:** remove 2.0 mention ([5f24c6b](https://github.com/zikeji/node-hypixel/commit/5f24c6b15341f66fd692f4d0badede71d1fa5a41)) +* **typedoc:** resolve issue with ts api docs missing ([4d2dd71](https://github.com/zikeji/node-hypixel/commit/4d2dd710f8cdf7dfc787fc29b88d2fe6788fb145)) +* **vuepress:** remove erroneous console.log statement ([2926b8c](https://github.com/zikeji/node-hypixel/commit/2926b8c55b01cb730d33fb6dfe82ff44703bd328)) +* **vuepress:** update all urls to point to new ts-api links ([7beecf8](https://github.com/zikeji/node-hypixel/commit/7beecf8bc6c5e8316e307840050618cbc71bbeba)) + + +### Miscellaneous Chores + +* **deps:** update a few documentation related dependencies ([58409f0](https://github.com/zikeji/node-hypixel/commit/58409f04e3082c434d5c03291c128fb7f15b0f13)) +* **deps:** update dts generator and update processing to account for changes ([05cef05](https://github.com/zikeji/node-hypixel/commit/05cef05d8c856fb1b31262e1c04a4e20a50c114c)) + +## [1.19.0](https://github.com/zikeji/node-hypixel/compare/v1.18.0...v1.19.0) (2021-01-04) + + +### Features + +* **api:** add /skyblock/auctions_ended endpoint ([1b8a4f6](https://github.com/zikeji/node-hypixel/commit/1b8a4f6a85be6c9b641e3e8bccf15d4f4f1493de)) + + +### Bug Fixes + +* **deps:** duplicate line ([f0359c1](https://github.com/zikeji/node-hypixel/commit/f0359c1c8cdc25050251e33e1f12a37fecf75461)) +* **docs:** fix issue with newer typedoc not generating properly ([9ad8e8f](https://github.com/zikeji/node-hypixel/commit/9ad8e8fd0d39bfff791eb6344dc31a08d945ca0a)) + + +### Documentation + +* **helpers:** add information on using the item data helper for auctions ([2fb1ece](https://github.com/zikeji/node-hypixel/commit/2fb1ecef4ae870c6a49ddb1ad3f64636923d3182)) + + +### Miscellaneous Chores + +* **dependencies:** update prismarine, and typings ([524ba52](https://github.com/zikeji/node-hypixel/commit/524ba5224187519ddda5d23e18c1016a4d159447)) + +## [1.18.0](https://github.com/zikeji/node-hypixel/compare/v1.17.0...v1.18.0) (2020-12-08) + + +### Features + +* **tests:** add tests for collections helper ([01a37aa](https://github.com/zikeji/node-hypixel/commit/01a37aa3bfc7ce8adcc2a85fe6c5576d84ec34ea)) +* add skyblock collections helper ([55d0efb](https://github.com/zikeji/node-hypixel/commit/55d0efbd72ba2072177a66b5c90a9f0ff5328255)) +* **api:** build out Guild schema more ([2e9c09a](https://github.com/zikeji/node-hypixel/commit/2e9c09a933c88dc5fc271a49c2d6af0df1923b24)) +* **helpers:** add guild level helper ([2bed9c3](https://github.com/zikeji/node-hypixel/commit/2bed9c3f3d22d30eeaa1cef9eb98674ab6b1082a)) + + +### Bug Fixes + +* **client:** fix reset date in limited event ([1874bbc](https://github.com/zikeji/node-hypixel/commit/1874bbc4086e19f659b3af79db0de1f4299405c3)) +* **docs:** resolve error generating TS documentation ([9b9ab7d](https://github.com/zikeji/node-hypixel/commit/9b9ab7db90ee5c9476e15eaae395621fb8cfdeae)) +* **docs:** update navbar style to reflect vuepress theme update changes ([6d723b4](https://github.com/zikeji/node-hypixel/commit/6d723b4b62eceab3651c5af8db2a7539048ca2bf)) +* **lint:** fixed lint errors from newer lint preset ([6afa7e5](https://github.com/zikeji/node-hypixel/commit/6afa7e56bcf972b5f6cd0ecf046140e729a90973)) + + +### Tests + +* update helpers test to reflect name change ([ed11e26](https://github.com/zikeji/node-hypixel/commit/ed11e262cdd7fa2234132726f6ae74984f25c6f9)) + + +### Documentation + +* **helpers:** add documentation for profile collections helper ([ad637f5](https://github.com/zikeji/node-hypixel/commit/ad637f54ceef9697db1d158a1d0f6b5371a6d0a6)) +* **readme:** add helpers excerpt ([99d4648](https://github.com/zikeji/node-hypixel/commit/99d46482af0b041c2dbe85705c25880955866181)) +* add frontmatter category and tags ([0a528f1](https://github.com/zikeji/node-hypixel/commit/0a528f187072da6619b68e79ccb32d0e3e32c738)) +* update last-updated date to be more readable ([3beb18e](https://github.com/zikeji/node-hypixel/commit/3beb18e592783a604df734d1c81dd602d106570c)) +* **changelog:** update pages.js to rebuild changelog with better formatting ([6469178](https://github.com/zikeji/node-hypixel/commit/6469178a5a63eeb63f27946f926f3fa7dc54a461)) +* add more notes to helpers ([f3f733f](https://github.com/zikeji/node-hypixel/commit/f3f733f08a8f75c857c5ba67a6be89424fbb787c)) +* **helpers:** add guild level documentation ([6e3a977](https://github.com/zikeji/node-hypixel/commit/6e3a9778ed1c05b61aa82a7c5cf47b15766edce2)) +* **helpers:** fix typo on network-level doc ([cb3309b](https://github.com/zikeji/node-hypixel/commit/cb3309bf0c42376cd885cf13dbe5102c878f4ee3)) +* **readme:** add 2.0 description to readme ([8c46629](https://github.com/zikeji/node-hypixel/commit/8c46629bc42a14d4778eb44deec1abe979754346)) + +## [1.17.0](https://github.com/zikeji/node-hypixel/compare/v1.16.0...v1.17.0) (2020-11-17) + + +### Features + +* **api:** completely explore and type out /player endpoint and update testing to validate ([9e674bd](https://github.com/zikeji/node-hypixel/commit/9e674bdf9167cf0f3997f92445bcd734a0472e64)) +* **api:** expand typing to the player.stats.Bedwars object ([4a469af](https://github.com/zikeji/node-hypixel/commit/4a469af75a4124a9bf352e2558c6067b3a832d9b)) +* **api:** update player schema to include more social links ([2d43066](https://github.com/zikeji/node-hypixel/commit/2d430667ef3a8dc1652384609764784b345fc404)) +* **helpers:** add Bedwars helper for level / prestige info ([485c010](https://github.com/zikeji/node-hypixel/commit/485c0105503e8fd2072772beb1ba4c56e9ff7310)) +* **helpers:** add NetworkLevel helper and add licensing information for the work ([21e2342](https://github.com/zikeji/node-hypixel/commit/21e2342aad614b806a15a536d5ca1c0aef38d77c)) +* **helpers:** revise skyblock item data into minecraft item data and added usage example for pit ([398f3a9](https://github.com/zikeji/node-hypixel/commit/398f3a9029d91e2ff28fcc9a1117bd3fef721d33)) + + +### Bug Fixes + +* **helpers:** add rank and plus color as they are separate ([c61aba0](https://github.com/zikeji/node-hypixel/commit/c61aba0c1ec0b2becb019d366d86045182f18b25)) +* **package:** removed redundant line ([f21ef7f](https://github.com/zikeji/node-hypixel/commit/f21ef7fa4a636ade7af17ab644d4fd5b105af274)) + + +### Code Refactoring + +* **helpers:** remove NonNullable due to earlier changes making it redundant ([648e476](https://github.com/zikeji/node-hypixel/commit/648e476814fe18cc4248514a9023d61ddcffcb5e)) + + +### Documentation + +* **helpers:** add description for network level helper. ([e1508a7](https://github.com/zikeji/node-hypixel/commit/e1508a785394ad0603058dde0dd80fb37cc8a814)) +* **helpers:** add documentation for Bedwars helper ([90f0408](https://github.com/zikeji/node-hypixel/commit/90f0408c72a355572654b95e5efea32cebda7af1)) +* **helpers:** add documentation for network level ([c9f2cdd](https://github.com/zikeji/node-hypixel/commit/c9f2cdd50b0d7fdb0f929026d4e0642d3b9a9132)) + + +### Tests + +* **helpers:** add bedwarslevelinfo test and trim fat ([2883d57](https://github.com/zikeji/node-hypixel/commit/2883d57b2bb5f2701d2c83725e06cb43b2994dd0)) + +## [1.16.0](https://github.com/zikeji/node-hypixel/compare/v1.15.0...v1.16.0) (2020-11-14) + + +### Features + +* **helpers:** add NBT data transformation ([42f2325](https://github.com/zikeji/node-hypixel/commit/42f232593ba1eb295ad9d27fa2749dae9dfc6364)) + + +### Bug Fixes + +* **test:** fix compilation issue for running coverage ([8fbf1b6](https://github.com/zikeji/node-hypixel/commit/8fbf1b6df71eb91760ca33cf429febe69325a6ab)) + + +### Code Refactoring + +* **helpers:** moved current helpers into dedicated folder ([1893a68](https://github.com/zikeji/node-hypixel/commit/1893a68e9d2136027b909a60e5b1c561045acaa4)) + + +### Tests + +* **coverage:** bring coverage back to 100% ([ce895d4](https://github.com/zikeji/node-hypixel/commit/ce895d4c45b550381cf3489f1844dc96b0f55d90)) +* **nbt:** add tests for transforming item data to ensure they match schema ([885f3d6](https://github.com/zikeji/node-hypixel/commit/885f3d6c666e5e88085b0472e5f97b5ac7e2ecba)) + + +### Documentation + +* **helpers:** add documentation and examples for item data helper ([015f724](https://github.com/zikeji/node-hypixel/commit/015f724f736d49ecec6e633e1cfe72456576c3a1)) + +## [1.15.0](https://github.com/zikeji/node-hypixel/compare/v1.14.0...v1.15.0) (2020-11-12) + + +### Features + +* **api:** removed rate limit and key on /skyblock/auctions and /skyblock/bazaar ([e3a882f](https://github.com/zikeji/node-hypixel/commit/e3a882fa506ba00b44ee7acaea0ced5a7b47f7a3)) +* **client:** add optional cache support to client ([7bbeb13](https://github.com/zikeji/node-hypixel/commit/7bbeb136da2a99742cc3181f29d12243a7414565)) + + +### Bug Fixes + +* **client:** ocassionally age is undefined when cache hit on CF ([894e33a](https://github.com/zikeji/node-hypixel/commit/894e33aeae6dde3ef5ae5f9c8effe56e49b72865)) + + +### Code Refactoring + +* **client:** no longer extend EventEmitter to get cleaner type suggestions ([fd2e5e5](https://github.com/zikeji/node-hypixel/commit/fd2e5e54bfac61875953c177d524a582b4254e12)) + + +### Documentation + +* **client:** add more documentation to the client ([278cf37](https://github.com/zikeji/node-hypixel/commit/278cf3783e1bb4507e12e647f7744d23adfe096e)) +* **guide:** add cache guide ([236f110](https://github.com/zikeji/node-hypixel/commit/236f110e3af427cfafeb13596701d5b322ed1cbe)) +* **readme:** update README ([1356d43](https://github.com/zikeji/node-hypixel/commit/1356d43ab3dc94f263f62df73c5fff4a95be6f31)) + +## [1.14.0](https://github.com/zikeji/node-hypixel/compare/v1.13.0...v1.14.0) (2020-11-11) + + +### Features + +* **helpers:** add hypixel rank helper ([98b6fbf](https://github.com/zikeji/node-hypixel/commit/98b6fbf09420ff93dd421ba2230aa0f5495f1ae1)) + +## [1.13.0](https://github.com/zikeji/node-hypixel/compare/v1.12.0...v1.13.0) (2020-11-10) + + +### Features + +* **api:** add /skyblock/auctions and /skyblock/auction endpoint ([9349037](https://github.com/zikeji/node-hypixel/commit/9349037713c601d3895a8038fda8395d2f64ad59)) +* **api:** add /skyblock/bazaar endpoint ([8ffe9a5](https://github.com/zikeji/node-hypixel/commit/8ffe9a5dfe48aa1cf2e1cd86e3834cd3e1a6bfc1)) +* **api:** add /skyblock/profile and /skyblock/profiles endpoint ([4c6285a](https://github.com/zikeji/node-hypixel/commit/4c6285af1767e26885ff1d399e45689a4db690e9)) +* **api:** update skyblock profile schema ([9b84460](https://github.com/zikeji/node-hypixel/commit/9b844605cb2a6301e136f048199eac3f5c9b8039)) +* **schema:** add headers to schema ([45ba69f](https://github.com/zikeji/node-hypixel/commit/45ba69f325edd797c83f48ef2b7d05ad679b07b4)) + + +### Documentation + +* **readme:** update progress in readme ([6c598d0](https://github.com/zikeji/node-hypixel/commit/6c598d0821a9bdf45476e06ec65728d7a1c13c9f)) + +## [1.12.0](https://github.com/zikeji/node-hypixel/compare/v1.11.0...v1.12.0) (2020-11-08) + + +### Features + +* **api:** add /resources/achievements endpoint ([d648dc8](https://github.com/zikeji/node-hypixel/commit/d648dc8377d64296425d24d52682b2499e7d8abf)) +* **api:** add /resources/challenges endpoint ([731895d](https://github.com/zikeji/node-hypixel/commit/731895db2064e1e0402020a9ad92cf74f96a22c4)) +* **api:** add /resources/guilds/achievements and /resources/guilds/permissions endpoint ([015adf4](https://github.com/zikeji/node-hypixel/commit/015adf4e472630ba7921b1f67a0e70b1c9afc612)) +* **api:** add /resources/quests endpoint ([ae40ec4](https://github.com/zikeji/node-hypixel/commit/ae40ec4c82ce4b542b42f453fb43fb53448a7981)) + + +### Bug Fixes + +* extra "example" key in schema ([5166bc9](https://github.com/zikeji/node-hypixel/commit/5166bc96a743043a4c0a873fd5739d23c1a4a767)) + +## [1.11.0](https://github.com/zikeji/node-hypixel/compare/v1.10.0...v1.11.0) (2020-11-07) + + +### Features + +* **api:** add /findGuild endpoint ([2539022](https://github.com/zikeji/node-hypixel/commit/25390222ad9414f5474a1fe84886729226b6e307)) +* **api:** add /friends endpoint ([04b1a9e](https://github.com/zikeji/node-hypixel/commit/04b1a9e6616b412558dbd33dffb67db824e5bc7c)) +* **api:** add /key endpoint ([7c3b0f7](https://github.com/zikeji/node-hypixel/commit/7c3b0f74eadfe1b0557027b5e75d6f25ebef7eb2)) +* **api:** add /player endpoint ([b6dd8b9](https://github.com/zikeji/node-hypixel/commit/b6dd8b947d1087a5820f985b877c2f2f5f41ab37)) +* **api:** add boosters endpoint ([a78baf6](https://github.com/zikeji/node-hypixel/commit/a78baf607e87741aab3ff810fd43ef1b0ef51c41)) +* **api:** add guild endpoint ([66ff480](https://github.com/zikeji/node-hypixel/commit/66ff4801e8a9bafdc10f1593ff6272b595fa28d4)) +* **api:** add leaderboards endpoint ([f0917c5](https://github.com/zikeji/node-hypixel/commit/f0917c5c4046b70c8b3b6a55d9a1f062c5fcd5a4)) +* **api:** add player count and game counts endpoints ([44bf47a](https://github.com/zikeji/node-hypixel/commit/44bf47a7c92ef34cbdb20d8bc74ce2c60ee46b90)) +* **api:** add recentGames endpoint ([9424309](https://github.com/zikeji/node-hypixel/commit/9424309544e61807a3b10167dac0a24ad6ae259d)) +* **error handling:** add GenericHTTPError to cover the rest of Hypixel's error types & increase code coverage to 100% ([02c92e1](https://github.com/zikeji/node-hypixel/commit/02c92e160b36c48ac6e8313146fe2a7f44dbe514)) + + +### Documentation + +* **readme:** update progress in readme ([4b7f29c](https://github.com/zikeji/node-hypixel/commit/4b7f29c6f61b0396115b651bf76b3766013366d2)) + +## [1.10.0](https://github.com/zikeji/node-hypixel/compare/v1.9.1...v1.10.0) (2020-10-20) + + +### Features + +* **meta:** add new unenumerable meta field to results for meta information ([4357a7a](https://github.com/zikeji/node-hypixel/commit/4357a7a984de1fa7260a10946d283a4cac409ba9)) +* **meta:** add ratelimit to meta ([3de2b7f](https://github.com/zikeji/node-hypixel/commit/3de2b7f61a9eb80e32184158e5f025f2d63cdb8e)) + + +### Bug Fixes + +* **type:** resultarray returns appropriate array type ([d8ae79e](https://github.com/zikeji/node-hypixel/commit/d8ae79e69bb4dd1f214ab01952ec79da9ece1736)) + + +### Tests + +* improve coverage, test new meta ([2933f04](https://github.com/zikeji/node-hypixel/commit/2933f04abf453712cf3db67b6e360ad311122bcd)) +* **skyblock news:** add more assertions for news test ([791b02e](https://github.com/zikeji/node-hypixel/commit/791b02e6419c0c832b6c23e10005006b4e1ecdb7)) + + +### Documentation + +* **guide:** begin fleshing out guide ([be6ac06](https://github.com/zikeji/node-hypixel/commit/be6ac064572a3c6554bebca9a24534fdd7bd167a)) +* **vuepress:** extract additionalpages to new plugin and adjust changelog sidebar headers ([41728e6](https://github.com/zikeji/node-hypixel/commit/41728e602fa766ba38104e15ced260783ca1b4b3)) + +### [1.9.1](https://github.com/zikeji/node-hypixel/compare/v1.9.0...v1.9.1) (2020-10-19) + + +### Bug Fixes + +* **ci:** run test on everything so CI updates properly ([169ba06](https://github.com/zikeji/node-hypixel/commit/169ba0625eff2eab68edcdb78bc645589f396459)) + + +### Documentation + +* add more logging and second build to see if pesky ts-api wants to work ([c7a2c16](https://github.com/zikeji/node-hypixel/commit/c7a2c16001afb5566739a0e4abfc1c7c35da7a32)) +* **readme:** update usage example ([606a46c](https://github.com/zikeji/node-hypixel/commit/606a46c2c21f92e71d42836eda49cea05959f200)) + +## [1.9.0](https://github.com/zikeji/node-hypixel/compare/v1.8.1...v1.9.0) (2020-10-19) + + +### Features + +* **api:** add skyblock skills resource endpoint ([9ee0d8a](https://github.com/zikeji/node-hypixel/commit/9ee0d8af18b43016d7a2d28fdb827ea96811c85f)) + + +### Bug Fixes + +* **ci:** main not master ([a4b4c4d](https://github.com/zikeji/node-hypixel/commit/a4b4c4d7712a295f55d9ba8164a75e8379894e5d)) +* **docs:** fix sidebar warning ([ff4e61c](https://github.com/zikeji/node-hypixel/commit/ff4e61cb9984cd72fd62159275799f0185e1e6f0)) +* **docs:** refresh addthis on reload ([fee1619](https://github.com/zikeji/node-hypixel/commit/fee1619d01c65b70232f56386d1fa5066eceb648)) + + +### Documentation + +* **readme:** update readme usage example ([8a0ef8b](https://github.com/zikeji/node-hypixel/commit/8a0ef8bfd59742d8f24cb6af7ee56864083616c7)) +* add AddThis support ([11545ca](https://github.com/zikeji/node-hypixel/commit/11545ca01106e59bdff800f7d68b5a9ec8783026)) + +### [1.8.1](https://github.com/zikeji/node-hypixel/compare/v1.8.0...v1.8.1) (2020-10-19) + + +### Bug Fixes + +* **docs:** checkout master and use node_env ([cad343e](https://github.com/zikeji/node-hypixel/commit/cad343ea0fc2f2417e0228cd9ba4e9c93d6c37a1)) + + +### Documentation + +* **api:** persist authorization ([c3fffd2](https://github.com/zikeji/node-hypixel/commit/c3fffd266a00a472d3f228240613be8a970fac2e)) + +## [1.8.0](https://github.com/zikeji/node-hypixel/compare/v1.7.0...v1.8.0) (2020-10-19) + + +### Features + +* **api:** add /status endpoint ([29be746](https://github.com/zikeji/node-hypixel/commit/29be746677d73f2116be1bb5f4ec066ed8d73c49)) +* **docs:** add support for code blocks in descriptions ([e8025eb](https://github.com/zikeji/node-hypixel/commit/e8025eb5618cd2e8168c44c9602ac56bd0d9c73c)) +* **docs:** revamp the schema display styles ([0aa2ab7](https://github.com/zikeji/node-hypixel/commit/0aa2ab7ef2629a4c6829b4f3eb8256270c74a05f)) +* **docs:** use webpack to load openapi yaml schema ([33bc537](https://github.com/zikeji/node-hypixel/commit/33bc537e98fef298a930f618ee5d33afcfbaff28)) + + +### Bug Fixes + +* **ci:** type in nyc command for ci coverage ([9beee2e](https://github.com/zikeji/node-hypixel/commit/9beee2e1fcc06ce91e011bc578a884f58d39e6f5)) +* **cross-env:** use a ci script ([8f1b4e1](https://github.com/zikeji/node-hypixel/commit/8f1b4e11b10a82b61a5214d5384e62ce208902ed)) +* **docs:** fix issues causing docs:build to fail ([59f0f37](https://github.com/zikeji/node-hypixel/commit/59f0f375768cab50c626bebe6c95dac278091967)) + + +### Documentation + +* **api:** style authorization dialog ([8554eca](https://github.com/zikeji/node-hypixel/commit/8554ecafa6c9c5596874e87b89595da1be225795)) +* **config:** add to watched files ([2d9283a](https://github.com/zikeji/node-hypixel/commit/2d9283a59f2e5084192dda07883a0e73c8e780fd)) +* **openapi:** add usage examples ([77b6d6c](https://github.com/zikeji/node-hypixel/commit/77b6d6c7bc0ab027b1de3157f66434dc659f93c6)) +* **readme:** update to include project readme instead of custom readme for /, fix some styling ([6f162c0](https://github.com/zikeji/node-hypixel/commit/6f162c05491466c74ebe88bd0aaccfd4238a656a)) +* **swagger:** change expand depth ([44992cb](https://github.com/zikeji/node-hypixel/commit/44992cb2510e62bcb5587114d8559478a45f0639)) + +## [1.7.0](https://github.com/zikeji/node-hypixel/compare/v1.6.0...v1.7.0) (2020-10-19) + + +### Features + +* **api:** add watchdogstats ([d6ad4b7](https://github.com/zikeji/node-hypixel/commit/d6ad4b7cb715680c36e7149c58074ee1a1219ee2)) + + +### Reverts + +* **ci:** revert runs-on as it did not solve the issue ([4022c2c](https://github.com/zikeji/node-hypixel/commit/4022c2c89b29eb7b20e7a720db85435cf4a8aa36)) + + +### Code Refactoring + +* **client:** Refactor client to closely match the methods of the API. ([66854f4](https://github.com/zikeji/node-hypixel/commit/66854f4327dfc227914d4b754360f7faeefcfc2a)) + + +### Documentation + +* **readme:** update readme ([6ce65d7](https://github.com/zikeji/node-hypixel/commit/6ce65d79d4f0670c47a5329ae2d5dd76279fec21)) +* **readme:** update roadmap ([71df72a](https://github.com/zikeji/node-hypixel/commit/71df72ac173396ce4b036801b70aa309ba319d29)) +* **readme:** update roadmap ([61e774d](https://github.com/zikeji/node-hypixel/commit/61e774dbad2fa73f9cf5a97a66ad26f23eeb737d)) +* **vuepress:** disable cache for local dev ([baea275](https://github.com/zikeji/node-hypixel/commit/baea2759957db42ec604bbac96bf67c3dc94e2e0)) + + +### Miscellaneous Chores + +* **dependencies:** update dependencies ([e257e22](https://github.com/zikeji/node-hypixel/commit/e257e224de8d23127c3458ae12e79a944dbf7b09)) +* **dependencies:** update them once again ([7b9bbae](https://github.com/zikeji/node-hypixel/commit/7b9bbae9258ef759c9b717979f29d7fc0e0d2302)) + +## [1.6.0](https://github.com/zikeji/node-hypixel/compare/v1.5.2...v1.6.0) (2020-10-18) + + +### Features + +* **docs:** add Swagger client with some styling ([7ef6f72](https://github.com/zikeji/node-hypixel/commit/7ef6f72587e197a933e63c3eed7d8727ebc74e6a)) + + +### Bug Fixes + +* include all in dist folder ([afa5044](https://github.com/zikeji/node-hypixel/commit/afa5044bbe96ba90f193f9607faadf15e2b0dadb)) + +### [1.5.2](https://github.com/zikeji/node-hypixel/compare/v1.5.1...v1.5.2) (2020-10-18) + + +### Bug Fixes + +* **ci:** add logging to action in attempt to troubleshoot missing information ([c877fa4](https://github.com/zikeji/node-hypixel/commit/c877fa4716140244080c71639ad637acbc5dfe99)) + + +### Documentation + +* **meta:** add social, add embed metadata ([858895a](https://github.com/zikeji/node-hypixel/commit/858895abd91f684ed9632119593fc67614300456)) +* **readme:** point to coveralls ([1d30fe2](https://github.com/zikeji/node-hypixel/commit/1d30fe259cb5beae73719543bfcd673af0230de2)) + +### [1.5.1](https://github.com/zikeji/node-hypixel/compare/v1.5.0...v1.5.1) (2020-10-18) + + +### Bug Fixes + +* **docs:** properly escape hero text ([d3f789d](https://github.com/zikeji/node-hypixel/commit/d3f789dec489871d507a7aff5d64be37d37ea89b)) +* **publishing:** add publishconfig and explicit private ([2fd4380](https://github.com/zikeji/node-hypixel/commit/2fd4380a5e797c214575e1ea07057ebefb0ac344)) + + +### Documentation + +* **readme:** fix links ([3565628](https://github.com/zikeji/node-hypixel/commit/3565628aab334cb63bdbb00fc63f219169d19fc3)) + +## [1.5.0](https://github.com/zikeji/node-hypixel/compare/v1.4.0...v1.5.0) (2020-10-18) + + +### Features + +* **rebrand:** again, rebrand, to an available package name ([6b2fe6a](https://github.com/zikeji/node-hypixel/commit/6b2fe6a7d8527008821bc780896a2bc6ab8a92b6)) + + +### Bug Fixes + +* **typo:** type in package.json ([34fa9f0](https://github.com/zikeji/node-hypixel/commit/34fa9f0dc014d0eb512d2dabcbf8e4ae9c580186)) + + +### Miscellaneous Chores + +* **lock:** update package-lock ([bcfc0db](https://github.com/zikeji/node-hypixel/commit/bcfc0dbc777c91998b32ef30f107ca84c225801c)) + +## [1.4.0](https://github.com/zikeji/node-hypixel/compare/v1.3.0...v1.4.0) (2020-10-18) + + +### Features + +* **collections:** add collections resource ([786f524](https://github.com/zikeji/node-hypixel/commit/786f52484d45f9c3722421651ccf4201640538fb)) +* **rebrand:** rebrand to hypixelapi ([ca3dc87](https://github.com/zikeji/node-hypixel/commit/ca3dc8794f8a33238ac7d4b7f39b582a392f4034)) + +## [1.3.0](https://github.com/zikeji/node-hypixel/compare/v1.2.0...v1.3.0) (2020-10-17) + + +### Features + +* **openapi:** begin implementation of OpenAPI 3.0 spec ([98dc4eb](https://github.com/zikeji/node-hypixel/commit/98dc4eb73066355d08122aa77cfd10b61a38791a)) + + +### Documentation + +* **readme:** update shield ([756e78f](https://github.com/zikeji/node-hypixel/commit/756e78f8ac53c0b6198866fc611836bd2c7ff1f9)) +* **vuepress:** rename typedoc generated content to ts-api ([f56e9b3](https://github.com/zikeji/node-hypixel/commit/f56e9b3c740e9cbb4fd3ef8a76d58bfeaa642445)) + +## [1.2.0](https://github.com/zikeji/node-hypixel/compare/v1.1.0...v1.2.0) (2020-10-17) + + +### Features + +* **docs:** add new documentation using vuepress ([d9a1661](https://github.com/zikeji/node-hypixel/commit/d9a166128985858a9e004f56fb98846f2698f876)) + + +### Tests + +* **queue:** fix reset data issue ([54ed1fd](https://github.com/zikeji/node-hypixel/commit/54ed1fd72cdb542b9a63a3b6b0c590cb38301f7a)) + + +### Code Refactoring + +* HypixelSkyblock to "Client". Add base index to re-export all for usage on NPM. ([99401bb](https://github.com/zikeji/node-hypixel/commit/99401bb0924bdd36ffb69e18a51a0f931a181c97)) + + +### Documentation + +* **readme:** update readme ([66b9c86](https://github.com/zikeji/node-hypixel/commit/66b9c86c8cbabdb3f8acc53632923170812e7d26)) +* more documentation for the profile interface ([dab4a98](https://github.com/zikeji/node-hypixel/commit/dab4a98c71b4e5dff0ab7e043d56e6c5f8c1590e)) +* more documentation tweaks, including namespacing ([4de57ee](https://github.com/zikeji/node-hypixel/commit/4de57ee613f240de4ac3389d136acdbc747c28f7)) + +## [1.1.0](https://github.com/zikeji/node-hypixel/compare/v1.0.0...v1.1.0) (2020-10-12) + + +### Features + +* **ratelimit:** add rate limit queue ([707a342](https://github.com/zikeji/node-hypixel/commit/707a342c6fac73fb4e99acdbeb072dfb27f9388a)) + +## 1.0.0 (2020-10-11) + + +### Features + +* houston, we are a go! ([eafb0d0](https://github.com/zikeji/node-hypixel/commit/eafb0d06b62b2be745bd9bf8d4048aeb1bded7ad)) + + +### Bug Fixes + +* **actions:** add environment variable ([773b7a1](https://github.com/zikeji/node-hypixel/commit/773b7a1110101a1cadee52d6b7bcf5762f2cc25c)) +* **actions:** drop support for node 8.0 ([b8440f4](https://github.com/zikeji/node-hypixel/commit/b8440f402bc8dd95c06f770de28b87a59b1f07be)) +* **ci:** note to self: build before running tests ([c70da5a](https://github.com/zikeji/node-hypixel/commit/c70da5abb1582074540688bfff4aa17605876f71)) +* **semantic-release:** use main branch ([81276b0](https://github.com/zikeji/node-hypixel/commit/81276b028952cca8bf0964ae2bb4ac3340526090)) + + +### Documentation + +* **readme:** add another badge - shiny ([9236b32](https://github.com/zikeji/node-hypixel/commit/9236b322531a97f5ed9888f04a719ed546eb40ab)) +* **readme:** update readme & package ([ddce35d](https://github.com/zikeji/node-hypixel/commit/ddce35d79374743ca4503f2d64d1cc6cec2fe93c)) diff --git a/deno_dist/Client.ts b/deno_dist/Client.ts new file mode 100644 index 00000000..0d8231e0 --- /dev/null +++ b/deno_dist/Client.ts @@ -0,0 +1,589 @@ +import { EventEmitter } from "https://deno.land/std@0.85.0/node/events.ts"; +import { URL } from "https://deno.land/std@0.85.0/node/url.ts"; +import { GenericHTTPError } from "./errors/GenericHTTPError.ts"; +import { InvalidKeyError } from "./errors/InvalidKeyError.ts"; +import { FindGuild } from "./methods/findGuild.ts"; +import { Friends } from "./methods/friends.ts"; +import { Guild } from "./methods/guild.ts"; +import { Player } from "./methods/player.ts"; +import { RecentGames } from "./methods/recentGames.ts"; +import { Resources } from "./methods/resources/index.ts"; +import { SkyBlock } from "./methods/skyblock/index.ts"; +import { Status } from "./methods/status.ts"; +import type { Components, Paths } from "./types/api.ts"; +import { Queue } from "./util/Queue.ts"; +import { request } from "./util/Request.ts"; +import { getResultObject, ResultObject } from "./util/ResultObject.ts"; + +/** @internal */ +export interface ActionableCall { + execute: () => Promise; + retries: number; + noRateLimit: boolean; + includeApiKey: boolean; +} + +/** @hidden */ +export interface RateLimitData { + /** + * Remaining API calls until the limit resets. + */ + remaining: number; + /** + * Time, in seconds, until remaining resets to limit. + */ + reset: number; + /** + * How many requests per minute your API key can make. + */ + limit: number; +} + +/** + * Possible meta options returned on the meta variable. + */ +export interface DefaultMeta { + /** + * If this request required an API key it returned rate limit information in the headers, which is included here. + */ + ratelimit?: RateLimitData; + /** + * If you included a cache get/set method in the options, this value will be set to true if that cache was hit. + */ + cached?: boolean; + /** + * Data from CloudFlare's headers in regards to caching - particularly relevant for resources endpoints. + */ + cloudflareCache?: { + /** + * Cloudflare cache status. + */ + status: "HIT" | "MISS" | "BYPASS" | "EXPIRED" | "DYNAMIC"; + /** + * Cloudflare cache age. + */ + age?: number; + /** + * Cloudflare max cache age. + */ + maxAge?: number; + }; +} + +/** @hidden */ +export interface RequestOptions { + url: string; + timeout: number; + userAgent: string; + noRateLimit: boolean; + getRateLimitHeaders: Client["getRateLimitHeaders"]; +} + +/** @hidden */ +export interface Parameters { + [parameter: string]: string; +} + +/** + * If you want built in caching, implementing these methods (or utilitizing an library that includes these methods) is a must. Refer to the [cache](https://node-hypixel.zikeji.com/guide/cache) guide. + */ +export interface BasicCache { + get( + key: string + ): Promise<(T & DefaultMeta) | undefined>; + set( + key: string, + value: T & DefaultMeta + ): Promise; +} + +export interface ClientOptions { + /** + * Amount of times to retry a failed request. + * @default 3 + */ + retries?: number; + /** + * The time, in milliseconds, you want to wait before giving up on the method call. + * + * **NOTE:** This option is ignored when being [used in Deno](https://github.com/denoland/deno/issues/7019). + * @default 10000 + */ + timeout?: number; + /** + * User agent the client uses when making calls to Hypixel's API + * @default @zikeji/hypixel + */ + userAgent?: string; + /** + * Functions you want to use for caching results. Optional. + */ + cache?: BasicCache; +} + +interface ClientEvents { + limited: (limit: number, reset: Date) => void; + reset: () => void; +} + +export declare interface Client { + /** + * Listen to the "limited" event which emits when the client starts limiting your calls due to hitting the rate limit. + * @category Events + */ + on(event: "limited", listener: (limit: number, reset: Date) => void): this; + + /** + * Listen to the "reset" event which emits when the API rate limit resets. + * @category Events + */ + on(event: "reset", listener: () => void): this; + + /** + * Listen once to the "limited" event which emits when the client starts limiting your calls due to hitting the rate limit. + * @category Events + */ + once(event: "limited", listener: (limit: number, reset: Date) => void): this; + + /** + * Listen once to the "reset" event which emits when the API rate limit resets. + * @category Events + */ + once(event: "reset", listener: () => void): this; + + /** + * Remove your function listening to the "limited" event. + * @category Events + */ + off(event: "limited", listener: () => void): this; + + /** + * Remove your function listening to the "reset" event. + * @category Events + */ + off(event: "reset", listener: () => void): this; +} + +export class Client { + /** @internal */ + private static readonly endpoint = new URL(`https://api.hypixel.net`); + /** @internal */ + private readonly emitter = new EventEmitter(); + /** @internal */ + private readonly queue = new Queue(); + /** @internal */ + private readonly apiKey: string; + /** @internal */ + private readonly retries: number; + /** @internal */ + private readonly timeout: number; + /** @internal */ + private readonly userAgent: string; + /** @internal */ + private readonly cache?: ClientOptions["cache"]; + + /** @internal */ + protected rateLimit: RateLimitData = { + remaining: -1, + reset: -1, + limit: -1, + }; + + /** + * Create a new instance of the API client. + * @param key Your Hypixel API key. + * @param options Any options and customizations being applied. + */ + public constructor(key: string, options?: ClientOptions) { + if (!key || typeof key !== "string") { + throw new InvalidKeyError("Invalid API key"); + } + this.apiKey = key; + this.retries = options?.retries ?? 3; + this.timeout = options?.timeout ?? 10000; + this.userAgent = options?.userAgent ?? "@zikeji/hypixel"; + this.cache = options?.cache; + } + + public on( + event: E, + listener: ClientEvents[E] + ): this { + this.emitter.on(event, listener); + return this; + } + + public once( + event: E, + listener: ClientEvents[E] + ): this { + this.emitter.once(event, listener); + return this; + } + + public off( + event: E, + listener: ClientEvents[E] + ): this { + this.emitter.off(event, listener); + return this; + } + + /** + * Returns list of boosters. + * @example + * ```typescript + * const boosters = await client.boosters(); + * console.log(boosters); + * ``` + * @category API + */ + public async boosters(): Promise< + ResultObject + > { + return getResultObject( + await this.call("boosters"), + ["success"] + ); + } + + /** + * Returns the id of the requested guild if found. + * @example + * ```typescript + * const { guild } = await client.findGuild.byUuid("20934ef9488c465180a78f861586b4cf"); + * console.log(guild); + * // 553490650cf26f12ae5bac8f + * ``` + * @category API + */ + public findGuild: FindGuild = new FindGuild(this); + + /** + * Returns friendships for given player. + * @example + * ```typescript + * const friends = await client.friends.uuid("20934ef9488c465180a78f861586b4cf"); + * console.log(friends); + * ``` + * @category API + */ + public friends: Friends = new Friends(this); + + /** + * Returns the current player count along with the player count of each public game + mode on the server. + * @example + * ```typescript + * const response = await client.gameCounts(); + * console.log(response); + * ``` + * @category API + */ + public async gameCounts(): Promise< + ResultObject + > { + return getResultObject( + await this.call("gameCounts"), + ["success"] + ); + } + + /** + * Returns the guild by the requested ID if found. + * @example + * ```typescript + * const guild = await client.guild.id("553490650cf26f12ae5bac8f"); + * ``` + * @category API + */ + public guild: Guild = new Guild(this); + + /** + * Returns information regarding given key. + * @example + * ```typescript + * const key = await client.key(); + * console.log(key); + * ``` + * @category API + */ + public async key(): Promise< + ResultObject + > { + return getResultObject( + await this.call("key"), + ["record"] + ); + } + + /** + * Returns a list of the official leaderboards and their current standings for games on the network. + * @example + * ```typescript + * const leaderboards = await client.leaderboards(); + * console.log(leaderboards); + * ``` + * @category API + */ + public async leaderboards(): Promise< + ResultObject + > { + return getResultObject( + await this.call("leaderboards"), + ["leaderboards"] + ); + } + + /** + * Returns a player's data, such as game stats. + * @example + * ```typescript + * const player = await client.player.uuid("20934ef9488c465180a78f861586b4cf"); + * console.log(player); + * ``` + * @category API + */ + public player: Player = new Player(this); + + /** + * Returns current player count. + * @example + * ```typescript + * const response = await client.playerCounts(); + * console.log(response); + * ``` + * @category API + */ + public async playerCount(): Promise< + ResultObject + > { + return getResultObject( + await this.call("playerCount"), + ["success"] + ); + } + + /** + * Returns recent games of a player. A maximum of 100 games are returned and recent games are only stored for up to 3 days at this time. + * @example + * ```typescript + * const response = await client.recentGames.uuid("20934ef9488c465180a78f861586b4cf"); + * console.log(response); + * ``` + * @category API + */ + public recentGames: RecentGames = new RecentGames(this); + + /** + * Relatively static Hypixel resources that don't change often at all. + * @category API + */ + public resources: Resources = new Resources(this); + + /** + * All SkyBlock related endpoints. + * @category API + */ + public skyblock: SkyBlock = new SkyBlock(this); + + /** + * Returns online status information for given player, including game, mode and map when available. + * @example + * ```typescript + * const response = await client.status.uuid("20934ef9488c465180a78f861586b4cf"); + * console.log(response); + * ``` + * @category API + */ + public status: Status = new Status(this); + + /** + * Returns some statistics about Watchdog & bans. + * @example + * ```typescript + * const response = await client.watchdogstats(); + * console.log(response); + * // { + * // watchdog_lastMinute: 1, + * // staff_rollingDaily: 3014, + * // watchdog_total: 5589923, + * // watchdog_rollingDaily: 4662, + * // staff_total: 1874174 + * // } + * ``` + * @category API + */ + public async watchdogstats(): Promise< + ResultObject + > { + return getResultObject( + await this.call("watchdogstats"), + ["success"] + ); + } + + /** + * The raw query method used by this library. You may use this if you need to use an undocumented method with this library. + * + * @category Custom + * @param path The path on the method you want to query. + * @param parameters Any search parameters you want to use. + * @typeParam T As all of Hypixel's API methods return a basic `{ success: boolean; cause?: string; }`, this type parameter (if using Typescript) extends an interface including those. + * @example + * Getting the ID of a guild using the [findGuild](https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/findGuild.md) method. + * ```javascript + * const response = await client.call("findGuild", { byName: "Mini Squid" }); + * console.log(response); + * // { success: true, guild: '553490650cf26f12ae5bac8f' } + * ``` + */ + public async call( + path: string, + parameters: Parameters = {} + ): Promise { + if (!this.cache) { + return this.executeActionableCall( + this.createActionableCall(path, parameters) + ); + } + const key = `${path.split("/").join(":")}${ + Object.values(parameters).length === 0 + ? "" + : `:${Object.values(parameters).map((v) => + v.toLowerCase().replace(/-/g, "") + )}` + }`; + const cachedResponse: + | (T & { cached?: boolean }) + | undefined = await this.cache.get(key); + if (cachedResponse) { + cachedResponse.cached = true; + return cachedResponse; + } + const response: T = await this.executeActionableCall( + this.createActionableCall(path, parameters) + ); + await this.cache.set(key, response); + return response; + } + + /** @internal */ + private async executeActionableCall( + call: ActionableCall + ): Promise { + await this.queue.wait(); + if (this.rateLimit.remaining === 0) { + const timeout = this.rateLimit.reset * 1000; + this.emitter.emit( + "limited", + this.rateLimit.limit, + new Date(Date.now() + timeout) + ); + await new Promise((resolve) => { + setTimeout(resolve, timeout); + }); + this.emitter.emit("reset"); + } + let response: T & DefaultMeta; + try { + response = await call.execute(); + } catch (error) { + /* istanbul ignore else */ + if ( + error instanceof InvalidKeyError || + error instanceof GenericHTTPError || + /* istanbul ignore next */ call.retries === this.retries + ) { + throw error; + } + /* istanbul ignore next */ + call.retries += 1; + /* istanbul ignore next */ + return this.executeActionableCall(call); + } finally { + this.queue.free(); + } + if (typeof response === "object" && !call.noRateLimit) { + response.ratelimit = JSON.parse(JSON.stringify(this.rateLimit)); + } + return response; + } + + /** @internal */ + private createActionableCall( + path: string, + /* istanbul ignore next */ + parameters: Parameters = {} + ): ActionableCall { + let noRateLimit = false; + let includeApiKey = true; + + // No API key or rate limiting is needed on resources, skyblock/auctions, or skyblock/bazaar + if ( + path.startsWith("resources") || + path === "skyblock/auctions" || + path === "skyblock/auctions_ended" || + path === "skyblock/bazaar" + ) { + noRateLimit = true; + includeApiKey = false; + } + + return { + execute: this.callMethod.bind( + this, + path, + parameters, + noRateLimit, + includeApiKey + ), + retries: 0, + noRateLimit, + includeApiKey, + } as ActionableCall; + } + + /** @internal */ + private callMethod< + T extends Components.Schemas.ApiSuccess & { + cause?: string; + } & { cloudflareCache?: DefaultMeta["cloudflareCache"] } + >( + path: string, + parameters: Parameters, + noRateLimit: boolean, + includeApiKey: boolean + ): Promise { + const url = new URL(path, Client.endpoint); + Object.keys(parameters).forEach((param) => { + url.searchParams.set(param, parameters[param]); + }); + + if (includeApiKey) { + url.searchParams.set("key", this.apiKey); + } + + return request({ + url: url.toString(), + userAgent: this.userAgent, + timeout: this.timeout, + noRateLimit, + getRateLimitHeaders: this.getRateLimitHeaders.bind(this), + }); + } + + /** @internal */ + private getRateLimitHeaders(headers: Record): void { + Object.keys(this.rateLimit).forEach((key) => { + const headerKey = `ratelimit-${key}`; + if (headerKey in headers) { + this.rateLimit[key as keyof Client["rateLimit"]] = parseInt( + headers[headerKey] as string, + 10 + ); + } + }); + } +} + +export default Client; diff --git a/deno_dist/LICENSE b/deno_dist/LICENSE new file mode 100644 index 00000000..12e576ab --- /dev/null +++ b/deno_dist/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Zikeji + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/deno_dist/LICENSE-HYPIXEL-PHP.md b/deno_dist/LICENSE-HYPIXEL-PHP.md new file mode 100644 index 00000000..68ed3c18 --- /dev/null +++ b/deno_dist/LICENSE-HYPIXEL-PHP.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Aäron Plancke + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/deno_dist/README.md b/deno_dist/README.md new file mode 100644 index 00000000..4d9c5294 --- /dev/null +++ b/deno_dist/README.md @@ -0,0 +1,72 @@ +# @zikeji/hypixel + +[![npm](https://img.shields.io/npm/v/@zikeji/hypixel)][npm] +[![Deno](https://img.shields.io/badge/dynamic/json?color=black&label=Deno&prefix=v&query=%24.version&url=https%3A%2F%2Fraw.githubusercontent.com%2Fzikeji%2Fnode-hypixel%2Fmain%2Fpackage.json&style=flat&logo=Deno)](https://deno.land/x/hypixel) +[![npm bundle size](https://img.shields.io/bundlephobia/min/@zikeji/hypixel)][npm] +[![visit docs](https://img.shields.io/badge/docs-VuePress-green)][docs] +[![Visit our Discord server.](https://img.shields.io/badge/support-Discord-green)](https://discord.gg/QkcGHwG) +[![Snyk Vulnerabilities for npm package version](https://img.shields.io/snyk/vulnerabilities/npm/@zikeji/hypixel)][npm] +[![Libraries.io dependency status for latest release](https://img.shields.io/librariesio/release/npm/@zikeji/hypixel)][npm] +[![GitHub license](https://img.shields.io/github/license/zikeji/node-hypixel)](https://github.com/zikeji/node-hypixel/blob/master/LICENSE) +[![GitHub last commit](https://img.shields.io/github/last-commit/zikeji/node-hypixel)][github] +[![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/zikeji/node-hypixel)][github] +[![GitHub issues](https://img.shields.io/github/issues/zikeji/node-hypixel)](https://github.com/zikeji/node-hypixel/issues) +[![Coveralls](https://img.shields.io/coveralls/github/zikeji/node-hypixel)](https://coveralls.io/github/zikeji/node-hypixel) +[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/zikeji/node-hypixel/release)][github] + +[npm]: https://www.npmjs.com/package/@zikeji/hypixel +[github]: https://github.com/zikeji/node-hypixel +[docs]: https://node-hypixel.zikeji.com +[hypixel]: https://api.hypixel.net/ + +With thorough **[IntelliSense](https://code.visualstudio.com/docs/editor/intellisense)** support & **[100% test coverage](https://coveralls.io/github/zikeji/node-hypixel)**, this is an unopinionated async/await API wrapper for [Hypixel's Public API][hypixel]. It is developed in TypeScript complete with [documentation][docs], [typed interfaces](https://node-hypixel.zikeji.com/ts-api/) for all API responses (and an [OpenAPI.yaml](https://node-hypixel.zikeji.com/api/)!), built-in rate-limit handling, [flexible cache support](https://node-hypixel.zikeji.com/guide/advanced/cache/), [helper functions](https://node-hypixel.zikeji.com/guide/helpers/player-ranks/), and support for undocumented endpoints. + +This library aims to replicate the API paths in it's method usage. As such, the general scheme would be to change the path of an API call by simply replacing the `/` with a `.`, and if the endpoint takes multiple parameters, those are added on the end. For example, `api.hypixel.net/skyblock/profiles?uuid=1234` would simply become `client.skyblock.profiles.uuid('1234')`. Of course, with everything being fully typed if you are using an IDE that supports [IntelliSense](https://code.visualstudio.com/docs/editor/intellisense) you should rarely need to reference documentation. + +## 2.0 to 3.0 Migration + +This library follows semver. As backwards incompatible changes were introduced while making this Deno compatible. Most likely nothing you use has changed, and you should be able to update without issue. The only breaking change is that the Client class no longer accepts agent as a parameter, as Deno does not support this. + +## Installation + +### NodeJS + +Use [npm](https://www.npmjs.com) to install this library. + +```bash +npm i --save @zikeji/hypixel +``` + +### Deno + +TBD + +## Usage + +```javascript +const { Client } = require("@zikeji/hypixel"); +const client = new Client("API_KEY"); +(async () => { + const status = await client.status.uuid("20934ef9488c465180a78f861586b4cf"); // Minikloon + console.log(status); + // {"online": false} + const stats = await client.watchdogstats(); + console.log(stats); + // {watchdog_lastMinute: 1, staff_rollingDaily: 2609, watchdog_total: 5591714, watchdog_rollingDaily: 4213, …} +})(); +``` + +## Helpers + +This library adds multiple helpers to facilitate using the Hypixel API. You can find documentation on each helper [here](https://node-hypixel.zikeji.com/guide/helpers/player-ranks/). If you would like to request a helper that doesn't exist, please open an issue. Otherwise if you would like to contribute one refer to the below section. + +## Contributing +If some API result isn't documented / typed out fully, please open an issue and I can see about adding it. However some data is too exhaustive to provide typings to in a reasonable manner, as exhibited [here](https://github.com/zikeji/node-hypixel/issues/119), where it isn't reasonable to add 19.5 thousand lines of code to document the entire dataset. + +Otherwise, pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. All changes must ensure they pass eslint, tests, and that testing is updated to meet or exceed the previous coverage. + +## Licenses + +This projected is licensed under the MIT license. For additional details see [LICENSE](LICENSE). + +This library contains derivative work based on classes from the [hypixel-php](https://github.com/Plancke/hypixel-php) library. Code that is derivative work of [hypixel-php](https://github.com/Plancke/hypixel-php) will be marked as such with a header comment. See [LICENSE-HYPIXEL-PHP.md](LICENSE-HYPIXEL-PHP.md) for additional details on the original license. \ No newline at end of file diff --git a/deno_dist/errors/GenericHTTPError.ts b/deno_dist/errors/GenericHTTPError.ts new file mode 100644 index 00000000..038d1fbd --- /dev/null +++ b/deno_dist/errors/GenericHTTPError.ts @@ -0,0 +1,9 @@ +export class GenericHTTPError extends Error { + /** The status code of the response */ + public code: number; + constructor(code: number, message: string) { + super(message); + this.code = code; + Object.setPrototypeOf(this, GenericHTTPError.prototype); + } +} diff --git a/deno_dist/errors/InvalidKeyError.ts b/deno_dist/errors/InvalidKeyError.ts new file mode 100644 index 00000000..639d8c34 --- /dev/null +++ b/deno_dist/errors/InvalidKeyError.ts @@ -0,0 +1,6 @@ +export class InvalidKeyError extends Error { + constructor(message: string) { + super(message); + Object.setPrototypeOf(this, InvalidKeyError.prototype); + } +} diff --git a/deno_dist/errors/RateLimitError.ts b/deno_dist/errors/RateLimitError.ts new file mode 100644 index 00000000..c12e05f6 --- /dev/null +++ b/deno_dist/errors/RateLimitError.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ + +export class RateLimitError extends Error { + /** + * Ignore this for code coverage as reproducing a real rate limit error is difficult. + */ + constructor(message: string) { + super(message); + Object.setPrototypeOf(this, RateLimitError.prototype); + } +} diff --git a/deno_dist/helpers/BedwarsLevelInfo.ts b/deno_dist/helpers/BedwarsLevelInfo.ts new file mode 100644 index 00000000..f9fee073 --- /dev/null +++ b/deno_dist/helpers/BedwarsLevelInfo.ts @@ -0,0 +1,130 @@ +/** + * This portion of code was ported from the [hypixel-php](https://github.com/Plancke/hypixel-php) library. + * + * Copyright (c) 2020 Zikeji + * Copyright (c) 2017 Aäron Plancke + * + * For the original full copyright and license information, please view the LICENSE-HYPIXEL-PHP.md that was distributed with this source code. + */ + +import { Components } from "../types/api.ts"; +import { + MinecraftColorAsHex, + MinecraftFormatting, +} from "./MinecraftFormatting.ts"; + +/** @internal */ +enum BEDWARS_LEVEL_CONSTANTS { + EL = 4, + XPP = 96 * 5000 + 7000, + LPP = 100, + HP = 10, +} + +/** + * Describes the results of the {@link getBedwarsLevelInfo} helper. + */ +export interface BedwarsLevelInfo { + level: number; + prestige: number; + prestigeName: string; + prestigeColor: string; + prestigeColorHex: string; + levelInCurrentPrestige: number; +} + +/** + * Calculates the BedWars prestige and level of a player and returns a {@link BedwarsLevelInfo} interface. + * @category Helper + */ +export function getBedwarsLevelInfo( + data: Components.Schemas.Player | number +): BedwarsLevelInfo { + const currentExp = + typeof data === "number" + ? data + : data.stats.Bedwars?.Experience ?? data.stats.Bedwars?.Experience_new; + if (typeof currentExp !== "number" || Number.isNaN(currentExp)) { + throw new TypeError( + "Data supplied does not contain player Bedwars experience." + ); + } + const prestiges = Math.floor(currentExp / BEDWARS_LEVEL_CONSTANTS.XPP); + let level = prestiges * BEDWARS_LEVEL_CONSTANTS.LPP; + let expWithoutPrestiges = + currentExp - prestiges * BEDWARS_LEVEL_CONSTANTS.XPP; + for (let i = 1; i <= BEDWARS_LEVEL_CONSTANTS.EL; i += 1) { + let elExp = 500; + const rL = i % BEDWARS_LEVEL_CONSTANTS.LPP; + + for (let ii = 0; ii < rL; ii += 1) { + elExp += ii * 500; + } + + if (expWithoutPrestiges < elExp) { + break; + } + level += 1; + expWithoutPrestiges -= elExp; + } + level += Math.floor(expWithoutPrestiges / 5000); + let prestige = Math.floor(level / BEDWARS_LEVEL_CONSTANTS.LPP); + if (prestige > BEDWARS_LEVEL_CONSTANTS.HP) { + prestige = BEDWARS_LEVEL_CONSTANTS.HP; + } + let prestigeName = "None"; + let prestigeColor = MinecraftFormatting.GRAY; + switch (prestige) { + case 1: + prestigeName = "Iron"; + prestigeColor = MinecraftFormatting.WHITE; + break; + case 2: + prestigeName = "Gold"; + prestigeColor = MinecraftFormatting.GOLD; + break; + case 3: + prestigeName = "Diamond"; + prestigeColor = MinecraftFormatting.AQUA; + break; + case 4: + prestigeName = "Emerald"; + prestigeColor = MinecraftFormatting.DARK_GREEN; + break; + case 5: + prestigeName = "Sapphire"; + prestigeColor = MinecraftFormatting.DARK_AQUA; + break; + case 6: + prestigeName = "Ruby"; + prestigeColor = MinecraftFormatting.DARK_RED; + break; + case 7: + prestigeName = "Crystal"; + prestigeColor = MinecraftFormatting.LIGHT_PURPLE; + break; + case 8: + prestigeName = "Opal"; + prestigeColor = MinecraftFormatting.BLUE; + break; + case 9: + prestigeName = "Amethyst"; + prestigeColor = MinecraftFormatting.DARK_PURPLE; + break; + case 10: + prestigeName = "Rainbow"; + prestigeColor = MinecraftFormatting.WHITE; + break; + default: + // noop + } + const levelInCurrentPrestige = level - prestige * BEDWARS_LEVEL_CONSTANTS.LPP; + return { + level, + prestige, + prestigeName, + prestigeColor, + prestigeColorHex: MinecraftColorAsHex[prestigeColor], + levelInCurrentPrestige, + }; +} diff --git a/deno_dist/helpers/GuildLevel.ts b/deno_dist/helpers/GuildLevel.ts new file mode 100644 index 00000000..747a066f --- /dev/null +++ b/deno_dist/helpers/GuildLevel.ts @@ -0,0 +1,90 @@ +/** + * This portion of code was ported from the [hypixel-php](https://github.com/Plancke/hypixel-php) library. + * + * Copyright (c) 2020 Zikeji + * Copyright (c) 2017 Aäron Plancke + * + * For the original full copyright and license information, please view the LICENSE-HYPIXEL-PHP.md that was distributed with this source code. + */ + +import { Components } from "../types/api.ts"; + +/** + * Describes the results of the {@link getGuildLevel} output object. + */ +export interface GuildLevel { + level: number; + preciseLevel: number; + currentExp: number; + expToLevel: number; + expToNextLevel: number; + remainingExpToNextLevel: number; +} + +/** @internal */ +const EXP_NEEDED = [ + 100000, + 150000, + 250000, + 500000, + 750000, + 1000000, + 1250000, + 1500000, + 2000000, + 2500000, + 2500000, + 2500000, + 2500000, + 2500000, + 3000000, +]; + +/** + * Calculates the guild level and returns a {@link GuildLevel} interface. + * @param data The guild object or the raw EXP number. + * @category Helper + */ +export function getGuildLevel( + data: Components.Schemas.Guild | number +): GuildLevel { + let currentExp = 0; + if (typeof data === "number") { + currentExp = data; + } else { + currentExp = data.exp ?? 0; + } + if (currentExp < 0) currentExp = 0; + let remainingExp = currentExp; + + let level = 0; + let needed = 0; + let expToLevel = 0; + const expNeededClone = [...EXP_NEEDED]; + const maxExpNeeded = expNeededClone[expNeededClone.length - 1]; + while (remainingExp >= 0) { + needed = expNeededClone.shift() ?? maxExpNeeded; + expToLevel += needed; + remainingExp -= needed; + if (remainingExp > 0) { + level += 1; + } + } + + const nextLevelExp = expToLevel; + expToLevel -= needed; + const expToNextLevel = nextLevelExp - expToLevel; + const expInCurrentLevel = currentExp - expToLevel; + const remainingExpToNextLevel = nextLevelExp - currentExp; + const nextLevelProgress = expInCurrentLevel / expToNextLevel; + const preciseLevel = level + nextLevelProgress; + + return { + level, + preciseLevel, + currentExp, + expToLevel, + expToNextLevel, + remainingExpToNextLevel, + }; +} diff --git a/deno_dist/helpers/MinecraftFormatting.ts b/deno_dist/helpers/MinecraftFormatting.ts new file mode 100644 index 00000000..ed473a2a --- /dev/null +++ b/deno_dist/helpers/MinecraftFormatting.ts @@ -0,0 +1,61 @@ +/** + * An enum describing color names and their Minecraft format variants. + */ +export enum MinecraftFormatting { + BLACK = "§0", + DARK_BLUE = "§1", + DARK_GREEN = "§2", + DARK_AQUA = "§3", + DARK_RED = "§4", + DARK_PURPLE = "§5", + GOLD = "§6", + GRAY = "§7", + DARK_GRAY = "§8", + BLUE = "§9", + GREEN = "§a", + AQUA = "§b", + RED = "§c", + LIGHT_PURPLE = "§d", + YELLOW = "§e", + WHITE = "§f", + BOLD = "§l", + STRIKETHROUGH = "§m", + UNDERLINE = "§n", + ITALIC = "§o", + RESET = "§r", + MAGIC = "§k", +} + +/** + * An enum that'll let you you get a hex color code for a specific Minecraft color formatting sequence. + */ +export enum MinecraftColorAsHex { + "§0" = "000000", + "§1" = "0000AA", + "§2" = "00AA00", + "§3" = "00AAAA", + "§4" = "AA0000", + "§5" = "AA00AA", + "§6" = "FFAA00", + "§7" = "AAAAAA", + "§8" = "555555", + "§9" = "5555FF", + "§a" = "55FF55", + "§b" = "55FFFF", + "§c" = "FF5555", + "§d" = "FF55FF", + "§e" = "FFFF55", + "§f" = "FFFFFF", +} + +/** @internal */ +const REMOVE_FORMATTING_REGEX = /§[0-9a-flmnokr]/gi; + +/** + * This helper will take a string and remove any of Minecraft's formatting sequence. Useful when parsing item lore or similar elements. + * @param value Any string with minecraft formatting. + * @category Helper + */ +export function removeMinecraftFormatting(value: string): string { + return value.replace(REMOVE_FORMATTING_REGEX, ""); +} diff --git a/deno_dist/helpers/NetworkLevel.ts b/deno_dist/helpers/NetworkLevel.ts new file mode 100644 index 00000000..1dc7f38f --- /dev/null +++ b/deno_dist/helpers/NetworkLevel.ts @@ -0,0 +1,93 @@ +/** + * This portion of code was ported from the [hypixel-php](https://github.com/Plancke/hypixel-php) library. + * + * Copyright (c) 2020 Zikeji + * Copyright (c) 2017 Aäron Plancke + * + * For the original full copyright and license information, please view the LICENSE-HYPIXEL-PHP.md that was distributed with this source code. + */ + +import { Components } from "../types/api.ts"; + +/** + * Describes the results from a {@link getNetworkLevel} function call. + */ +export interface NetworkLevel { + level: number; + preciseLevel: number; + currentExp: number; + expToLevel: number; + expToNextLevel: number; + remainingExpToNextLevel: number; +} + +/** @internal */ +enum NETWORK_LEVEL_CONSTANTS { + START = 10000, + GROWTH = 2500, + RPQP = (() => + -(NETWORK_LEVEL_CONSTANTS.START - 0.5 * NETWORK_LEVEL_CONSTANTS.GROWTH) / + NETWORK_LEVEL_CONSTANTS.GROWTH)(), + IPQP = (() => NETWORK_LEVEL_CONSTANTS.RPQP * NETWORK_LEVEL_CONSTANTS.RPQP)(), +} + +/** + * Calculates the total EXP required for a specific network level. + * @param level Level you're getting the EXP required for. Can be a float or an integer. + * @category Helper + */ +export function getExpFromNetworkLevel(level: number): number { + const flooredLevel = Math.floor(level); + const expToFlooredLevel = + (NETWORK_LEVEL_CONSTANTS.GROWTH * 0.5 * (flooredLevel - 2) + + NETWORK_LEVEL_CONSTANTS.START) * + (flooredLevel - 1); + if (flooredLevel === level) { + return expToFlooredLevel; + } + return ( + (getExpFromNetworkLevel(flooredLevel + 1) - expToFlooredLevel) * + (level % 1) + + expToFlooredLevel + ); +} + +/** + * Calculates the network level and returns a {@link NetworkLevel} interface. + * @param data The player object or the raw EXP number. + * @category Helper + */ +export function getNetworkLevel( + data: Components.Schemas.Player | number +): NetworkLevel { + let currentExp = 0; + if (typeof data === "number") { + currentExp = data; + } else { + currentExp = data.networkExp ?? 0; + } + if (currentExp < 0) currentExp = 0; + const level = Math.floor( + 1 + + NETWORK_LEVEL_CONSTANTS.RPQP + + Math.sqrt( + NETWORK_LEVEL_CONSTANTS.IPQP + + (2 / NETWORK_LEVEL_CONSTANTS.GROWTH) * currentExp + ) + ); + const expToLevel = getExpFromNetworkLevel(level); + const nextLevelExp = getExpFromNetworkLevel(level + 1); + const expToNextLevel = nextLevelExp - expToLevel; + const expInCurrentLevel = currentExp - expToLevel; + const remainingExpToNextLevel = nextLevelExp - currentExp; + const nextLevelProgress = expInCurrentLevel / expToNextLevel; + const preciseLevel = level + nextLevelProgress; + return { + level, + preciseLevel, + currentExp, + expToLevel, + expToNextLevel, + remainingExpToNextLevel, + }; +} diff --git a/deno_dist/helpers/PlayerRank.ts b/deno_dist/helpers/PlayerRank.ts new file mode 100644 index 00000000..1c23ab52 --- /dev/null +++ b/deno_dist/helpers/PlayerRank.ts @@ -0,0 +1,285 @@ +import { Components } from "../types/api.ts"; +import { + MinecraftColorAsHex, + MinecraftFormatting, +} from "./MinecraftFormatting.ts"; + +/** @internal */ +export enum PlayerRanks { + NON_DONOR = 1, + VIP = 2, + VIP_PLUS = 3, + MVP = 4, + MVP_PLUS = 5, + SUPERSTAR = 6, + YOUTUBER = 60, + JR_HELPER = 70, + HELPER = 80, + MODERATOR = 90, + ADMIN = 100, +} + +/** + * Describes the results from the {@link getPlayerRank} helper. + */ +export interface PlayerRank { + /** + * The priority of this rank as it relates to other ranks. + */ + priority: number; + /** + * Name of the rank as it appears in the data. + */ + name: string; + /** + * Cleaned up version of the name. + */ + cleanName: string; + /** + * The chat prefix with Minecraft formatting codes. + */ + prefix: string; + /** + * The chat prefix _without_ Minecraft formatting codes. + */ + cleanPrefix: string; + /** + * The Minecraft formatting color code of this rank. + */ + colorCode: MinecraftFormatting; + /** + * The hex value of the color code. + */ + colorHex: MinecraftColorAsHex; + /** + * If they have a custom color for their rank. + * **Note:** this can be set when the player isn't MVP++. If you want to use this value, be sure to check if the rank is SUPERSTAR (MVP++). + */ + customRankColor?: MinecraftFormatting; + /** + * Same as customRankColor, but the hex version of the color. + */ + customRankColorHex?: MinecraftColorAsHex; + /** + * If they have a custom color for the pluses in their rank (++). + * **Note:** this can be set when the player isn't MVP++. If you want to use this value, be sure to check if the rank is SUPERSTAR (MVP++). + */ + customPlusColor?: MinecraftFormatting; + /** + * Same as customPlusColor, but the hex version of the color. + */ + customPlusColorHex?: MinecraftColorAsHex; + /** + * Whether or not this is a staff only rank. + */ + staff: boolean; +} + +/** + * Get an {@link PlayerRank} object describing the player's rank in more detail without the need to figure out how to parse it yourself. + * @param player The result of `client.player.uuid()`. + * @param onlyPackages Whether to ignore their staff / youtube rank and only get their donor rank. + * @category Helper + */ +export function getPlayerRank( + player: NonNullable, + onlyPackages = false +): PlayerRank { + let foundRank: PlayerRanks = PlayerRanks.NON_DONOR; + if (onlyPackages) { + if (player.monthlyPackageRank) { + const rank = + PlayerRanks[player.monthlyPackageRank as keyof typeof PlayerRanks]; + if (rank) { + foundRank = rank; + } + } + if (player.newPackageRank) { + const rank = + PlayerRanks[player.newPackageRank as keyof typeof PlayerRanks]; + if (rank && rank > foundRank) { + foundRank = rank; + } + } + if (player.packageRank) { + const rank = PlayerRanks[player.packageRank as keyof typeof PlayerRanks]; + if (rank && rank > foundRank) { + foundRank = rank; + } + } + } else if (typeof player.rank !== "undefined" && player.rank !== "NORMAL") { + const rank = PlayerRanks[player.rank as keyof typeof PlayerRanks]; + if (rank) { + foundRank = rank; + } else { + return getPlayerRank(player, true); + } + } else { + return getPlayerRank(player, true); + } + let out: PlayerRank; + switch (foundRank) { + case PlayerRanks.VIP: + out = { + priority: foundRank, + name: "VIP", + cleanName: "VIP", + prefix: "§a[VIP]", + cleanPrefix: "[VIP]", + colorCode: MinecraftFormatting.GREEN, + colorHex: MinecraftColorAsHex[MinecraftFormatting.GREEN], + staff: false, + }; + break; + case PlayerRanks.VIP_PLUS: + out = { + priority: foundRank, + name: "VIP_PLUS", + cleanName: "VIP+", + prefix: "§a[VIP§6+§a]", + cleanPrefix: "[VIP+]", + colorCode: MinecraftFormatting.GREEN, + colorHex: MinecraftColorAsHex[MinecraftFormatting.GREEN], + staff: false, + }; + break; + case PlayerRanks.MVP: + out = { + priority: foundRank, + name: "MVP", + cleanName: "MVP", + prefix: "§b[MVP]", + cleanPrefix: "[MVP]", + colorCode: MinecraftFormatting.AQUA, + colorHex: MinecraftColorAsHex[MinecraftFormatting.AQUA], + staff: false, + }; + break; + case PlayerRanks.MVP_PLUS: + out = { + priority: foundRank, + name: "MVP_PLUS", + cleanName: "MVP+", + prefix: "§b[MVP§c+§b]", + cleanPrefix: "[MVP+]", + colorCode: MinecraftFormatting.AQUA, + colorHex: MinecraftColorAsHex[MinecraftFormatting.AQUA], + staff: false, + }; + break; + case PlayerRanks.SUPERSTAR: + out = { + priority: foundRank, + name: "SUPERSTAR", + cleanName: "MVP++", + prefix: "§6[MVP§c++§6]", + cleanPrefix: "[MVP++]", + colorCode: MinecraftFormatting.GOLD, + colorHex: MinecraftColorAsHex[MinecraftFormatting.GOLD], + staff: false, + }; + break; + case PlayerRanks.YOUTUBER: + out = { + priority: foundRank, + name: "YOUTUBER", + cleanName: "YOUTUBER", + prefix: "§c[§fYOUTUBE§c]", + cleanPrefix: "[YOUTUBE]", + colorCode: MinecraftFormatting.RED, + colorHex: MinecraftColorAsHex[MinecraftFormatting.RED], + staff: false, + }; + break; + case PlayerRanks.JR_HELPER: + out = { + priority: foundRank, + name: "JR_HELPER", + cleanName: "JR HELPER", + prefix: "§9[JR HELPER]", + cleanPrefix: "[JR HELPER]", + colorCode: MinecraftFormatting.BLUE, + colorHex: MinecraftColorAsHex[MinecraftFormatting.BLUE], + staff: true, + }; + break; + case PlayerRanks.HELPER: + out = { + priority: foundRank, + name: "HELPER", + cleanName: "HELPER", + prefix: "§9[HELPER]", + cleanPrefix: "[HELPER]", + colorCode: MinecraftFormatting.BLUE, + colorHex: MinecraftColorAsHex[MinecraftFormatting.BLUE], + staff: true, + }; + break; + case PlayerRanks.MODERATOR: + out = { + priority: foundRank, + name: "MODERATOR", + cleanName: "MODERATOR", + prefix: "§2[MOD]", + cleanPrefix: "[MOD]", + colorCode: MinecraftFormatting.DARK_GREEN, + colorHex: MinecraftColorAsHex[MinecraftFormatting.DARK_GREEN], + staff: true, + }; + break; + case PlayerRanks.ADMIN: + out = { + priority: foundRank, + name: "ADMIN", + cleanName: "ADMIN", + prefix: "§c[ADMIN]", + cleanPrefix: "[ADMIN]", + colorCode: MinecraftFormatting.RED, + colorHex: MinecraftColorAsHex[MinecraftFormatting.RED], + staff: true, + }; + break; + default: + out = { + priority: foundRank, + name: "NON_DONOR", + cleanName: "DEFAULT", + prefix: "§7", + cleanPrefix: "", + colorCode: MinecraftFormatting.GRAY, + colorHex: MinecraftColorAsHex[MinecraftFormatting.GRAY], + staff: false, + }; + break; + } + if (player.monthlyRankColor || player.rankPlusColor) { + const customRankColor = + MinecraftFormatting[ + player.monthlyRankColor as keyof typeof MinecraftFormatting + ]; + const customPlusColor = + MinecraftFormatting[ + player.rankPlusColor as keyof typeof MinecraftFormatting + ]; + if (customRankColor) { + out.customRankColor = customRankColor; + out.customRankColorHex = + MinecraftColorAsHex[ + customRankColor as keyof typeof MinecraftColorAsHex + ]; + } + if (customPlusColor) { + out.customPlusColor = customPlusColor; + out.customPlusColorHex = + MinecraftColorAsHex[ + customPlusColor as keyof typeof MinecraftColorAsHex + ]; + } + if (out.priority === PlayerRanks.SUPERSTAR) { + out.prefix = `${customRankColor ?? "§6"}[MVP${customPlusColor ?? "§c"}++${ + customRankColor ?? "§6" + }]`; + } + } + return out; +} diff --git a/deno_dist/helpers/Romanize.ts b/deno_dist/helpers/Romanize.ts new file mode 100644 index 00000000..3f6bafcf --- /dev/null +++ b/deno_dist/helpers/Romanize.ts @@ -0,0 +1,33 @@ +/** @hidden */ +enum ROMAN_NUMERALS { + M = 1000, + CM = 900, + D = 500, + CD = 400, + C = 100, + XC = 90, + L = 50, + XL = 40, + X = 10, + IX = 9, + V = 5, + IV = 4, + I = 1, +} + +/** + * Quick helper function that will help you convert a number to a roman numeral for display purposes. + * @param value The number you want to convert to a roman numeral. + * @category Helper + */ +export function romanize(value: number): string { + let roman = ""; + Object.entries(ROMAN_NUMERALS).forEach(([numeral, amount]) => { + while (value >= amount) { + roman += numeral; + // eslint-disable-next-line no-param-reassign + value -= amount as number; + } + }); + return roman; +} diff --git a/deno_dist/helpers/SkyBlockCollections.ts b/deno_dist/helpers/SkyBlockCollections.ts new file mode 100644 index 00000000..372d2c74 --- /dev/null +++ b/deno_dist/helpers/SkyBlockCollections.ts @@ -0,0 +1,175 @@ +import { Components } from "../types/api.ts"; + +/** + * Interface describing the accumulated information of all members on a profile. + * @hidden + */ +interface ProfileCollectionValues { + unlockedCollTiers: Set; + collectionQuantities: { + [collectionName: string]: number; + }; +} + +/** + * Interface that describes a collection category, e.g. "Farming" + */ +export interface SkyBlockProfileCollectionGroup { + /** The ID of the group, e.g. "FARMING" */ + id: string; + /** The name of the group, e.g. "Farming" */ + name: string; + /** + * A number representing the percentage progress the profile is through this group, e.g. "100" or "83.33333333333334" + * @example + * ```typescript + * const progress = collections[0].progress; + * console.log(progress); + * // output: + * 83.33333333333334 + * + * const percent = Math.round(progress * 100) / 100; + * console.log(percent); + * // output: + * 83.33 + * ``` + */ + progress: number; + /** Collection children that the profile has reached the maximum tier of. */ + maxedChildCollections: number; + /** How many collections are in this collection group. */ + totalCollections: number; + /** The children of this collection group. */ + children: SkyBlockProfileCollection[]; +} + +/** + * Interface describing an individual collection. + */ +export interface SkyBlockProfileCollection { + /** The ID of this collection, e.g. "LOG:2" */ + id: string; + /** The name of this collection, e.g. "Birch Wood" */ + name: string; + /** The tier the profile has reached. */ + tier: number; + /** The next tier the profile can reach. If the profile has reached the max tier, this value is omitted. */ + nextTier?: number; + /** The maximum tier of this collection. */ + maxTier: number; + /** + * The amount of resources in this collection the profile has collected toward tiers. + * + * **Note:** + * If the profile is a coop and all players do not have their collection API enabled, this will only account for the amounts collected by members with their collection API enabled. + */ + amount: number; + /** The amount required to reach the next collection tier. If the profile has reached the max tier, this value is omitted. */ + nextTierAmountRequired?: number; + /** The progress the profile is toward maxing this collection. */ + progress: number; +} + +export type SkyBlockProfileCollections = SkyBlockProfileCollectionGroup[]; + +/** + * This helper takes a profile and scans all of it's member's to get the most accurate collection information possible. Returns false is none of the members of the profile had their collections API enabled. + * @param profile The SkyBlock profile object you want to check. + * @param collections The collections resource object. + * @category Helper + */ +export function getSkyBlockProfileMemberCollections( + profile: Pick, "members">, + collections: Components.Schemas.SkyBlockResourcesParentCollections +): SkyBlockProfileCollections | false { + const profileCollectionValues = Object.values(profile.members).reduce( + (acc, member) => { + /* istanbul ignore else */ + if (member.unlocked_coll_tiers) { + member.unlocked_coll_tiers.forEach((uTier) => { + acc.unlockedCollTiers.add(uTier); + }); + } + /* istanbul ignore else */ + if (member.collection) { + Object.entries(member.collection).forEach(([key, quantity]) => { + /* istanbul ignore else */ + if (!acc.collectionQuantities[key]) acc.collectionQuantities[key] = 0; + acc.collectionQuantities[key] += + quantity /* istanbul ignore next */ || 0; + }); + } + return acc; + }, + { + unlockedCollTiers: new Set(), + collectionQuantities: {}, + } as ProfileCollectionValues + ); + if (profileCollectionValues.unlockedCollTiers.size === 0) { + return false; + } + return Object.entries(collections).reduce( + (acc, [collectionGroupId, collectionGroup]) => { + const group: SkyBlockProfileCollectionGroup = { + id: collectionGroupId, + name: collectionGroup.name, + progress: 0, + maxedChildCollections: 0, + totalCollections: 0, + children: [], + }; + Object.entries(collectionGroup.items).forEach( + ([collectionId, collection]) => { + group.totalCollections += 1; + const child: SkyBlockProfileCollection = { + id: collectionId, + name: collection.name, + tier: collection.tiers.reduce((tier, tierInfo) => { + if ( + profileCollectionValues.unlockedCollTiers.has( + `${collectionId}_${tierInfo.tier}` + ) || + (profileCollectionValues.collectionQuantities[collectionId] ?? + 0) > (tierInfo.amountRequired /* istanbul ignore next */ || 0) + ) { + // eslint-disable-next-line no-param-reassign + tier = tierInfo.tier as number; + } + return tier; + }, 0), + nextTier: 0, + maxTier: collection.maxTiers, + amount: + profileCollectionValues.collectionQuantities[collectionId] ?? 0, + nextTierAmountRequired: 0, + progress: 0, + }; + if (child.tier === child.maxTier) { + delete child.nextTier; + delete child.nextTierAmountRequired; + group.maxedChildCollections += 1; + child.progress = 100; + } else { + child.nextTier = child.tier + 1; + child.nextTierAmountRequired = + /* istanbul ignore next */ + collection.tiers.find((tInfo) => tInfo.tier === child.nextTier) + ?.amountRequired /* istanbul ignore next */ || 0; + child.progress = + ((profileCollectionValues.collectionQuantities[collectionId] || + 0) / + child.nextTierAmountRequired) * + 100; + } + group.children.push(child); + } + ); + group.progress = + (group.maxedChildCollections / group.totalCollections) * 100; + acc.push(group); + return acc; + }, + [] as SkyBlockProfileCollections + ); +} diff --git a/deno_dist/helpers/SkyBlockSkills.ts b/deno_dist/helpers/SkyBlockSkills.ts new file mode 100644 index 00000000..0e2a9dc0 --- /dev/null +++ b/deno_dist/helpers/SkyBlockSkills.ts @@ -0,0 +1,82 @@ +import { Components } from "../types/api.ts"; + +export interface SkyBlockSkillsInfo { + FARMING: SkyBlockSkillInfo; + MINING: SkyBlockSkillInfo; + COMBAT: SkyBlockSkillInfo; + /** + * As official API support does not exist for this skill, this will always return level 0. + */ + DUNGEONEERING: SkyBlockSkillInfo; + FORAGING: SkyBlockSkillInfo; + FISHING: SkyBlockSkillInfo; + ENCHANTING: SkyBlockSkillInfo; + ALCHEMY: SkyBlockSkillInfo; + CARPENTRY: SkyBlockSkillInfo; + RUNECRAFTING: SkyBlockSkillInfo; + /** + * As official API support does not exist for this skill, this will always return level 0. + */ + SOCIAL: SkyBlockSkillInfo; + TAMING: SkyBlockSkillInfo; + [key: string]: SkyBlockSkillInfo; +} + +export interface SkyBlockSkillInfo { + name: string; + description: string; + level: number; + exp: number; + totalExpToLevel: number; + expToNextLevel: number; + maxLevel: number; +} + +/** + * This helper takes a profile member and converts raw skill EXP to skill levels using the skills resources. Returns false is none of the profile member does not have their skills API enabled. + * @param profileMember The SkyBlock profile member object you want to check. + * @param skills The skills resource object. + * @category Helper + */ +export function getSkyBlockProfileMemberSkills( + profileMember: Components.Schemas.SkyBlockProfileMember, + skills: Components.Schemas.SkyBlockResourcesSkills +): SkyBlockSkillsInfo | false { + let hasApi = false; + const result = {} as SkyBlockSkillsInfo; + for (let i = 0; i < Object.keys(skills).length; i += 1) { + const skillName = Object.keys(skills)[i]; + const skill = skills[skillName]; + const skillKey = `experience_skill_${skillName.toLowerCase()}` as keyof Components.Schemas.SkyBlockProfileMember; + let exp = 0; + if (skillKey in profileMember) { + exp = profileMember[skillKey] as number; + hasApi = true; + } + let level = 0; + let totalExpToLevel = 0; + let expToNextLevel = 0; + for (let ii = 0; ii < skill.levels.length; ii += 1) { + const levelInfo = skill.levels[ii]; + if (levelInfo.totalExpRequired > exp) { + expToNextLevel = levelInfo.totalExpRequired - exp; + break; + } + level = levelInfo.level; + totalExpToLevel = levelInfo.totalExpRequired; + } + result[skillName] = { + name: skill.name, + description: skill.description, + level, + exp, + totalExpToLevel, + expToNextLevel, + maxLevel: skill.maxLevel, + }; + } + if (hasApi === false) { + return false; + } + return result; +} diff --git a/deno_dist/helpers/SkyWarsLevelInfo.ts b/deno_dist/helpers/SkyWarsLevelInfo.ts new file mode 100644 index 00000000..46c1c5ae --- /dev/null +++ b/deno_dist/helpers/SkyWarsLevelInfo.ts @@ -0,0 +1,154 @@ +/** + * This portion of code was ported from the [hypixel-php](https://github.com/Plancke/hypixel-php) library. + * + * Copyright (c) 2021 Zikeji + * Copyright (c) 2017 Aäron Plancke + * + * For the original full copyright and license information, please view the LICENSE-HYPIXEL-PHP.md that was distributed with this source code. + */ + +import { Components } from "../types/api.ts"; +import { + getSkyWarsPrestigeForLevel, + SkyWarsPrestiges, + SkyWarsPrestige, +} from "./SkyWarsPrestige.ts"; + +/** @internal */ +const skyWarsLevelConstants = { + expPerLevel: 10000, + easyLevelExp: [0, 20, 50, 80, 100, 250, 500, 1000, 1500, 2500, 4000, 5000], +}; + +/** + * Interface describing the results from the {@link getSkyWarsLevelInfo} function. + */ +export interface SkyWarsLevelInfo { + level: number; + preciseLevel: number; + currentExp: number; + expToLevel: number; + expToNextLevel: number; + remainingExpToNextLevel: number; +} + +/** + * This interface is returned by {@link getSkyWarsLevelInfo} if you passed true as the second parameter. + */ +export interface SkyWarsLevelInfoAndPrestige extends SkyWarsLevelInfo { + prestige: SkyWarsPrestige; + expToPrestige: number; + nextPrestige?: SkyWarsPrestige; + expToNextPrestige?: number; + remainingExpToNextPrestige?: number; + progressToNextPrestige?: number; +} + +/** + * Returns the total amount of exp it takes to get to a certain level. + * @param level The level of the player. + */ +export function totalExpToSkyWarsLevel(level: number): number { + let acc = 0; + const easyLevelCount = Math.min( + level, + skyWarsLevelConstants.easyLevelExp.length + ); + for (let i = 0; i < easyLevelCount; i += 1) { + acc += skyWarsLevelConstants.easyLevelExp[i]; + } + + return level <= skyWarsLevelConstants.easyLevelExp.length + ? acc + : acc + + (level - skyWarsLevelConstants.easyLevelExp.length) * + skyWarsLevelConstants.expPerLevel; +} + +/** + * Get SkyWars level information from a {@link Components.Schemas.Player} object or raw experience value. + * @param data A {@link Components.Schemas.Player} object or the raw experience value. + * @param includePrestige Whether or not to return the {@link SkyWarsPrestige} object. + * @category Helper + */ +export function getSkyWarsLevelInfo( + data: Components.Schemas.Player | number +): SkyWarsLevelInfo; +export function getSkyWarsLevelInfo( + data: Components.Schemas.Player | number, + includePrestige: true +): SkyWarsLevelInfoAndPrestige; +export function getSkyWarsLevelInfo( + data: Components.Schemas.Player | number, + includePrestige: false +): SkyWarsLevelInfo; +export function getSkyWarsLevelInfo( + data: Components.Schemas.Player | number, + includePrestige?: boolean +): SkyWarsLevelInfoAndPrestige | SkyWarsLevelInfo { + const currentExp = + typeof data === "number" + ? data + : (data.stats.SkyWars?.skywars_experience as number); + if (typeof currentExp !== "number" || Number.isNaN(currentExp)) { + throw new TypeError( + "Data supplied does not contain player SkyWars experience." + ); + } + + let expAcc = 0; + let level = -1; + for (let i = 0; i < skyWarsLevelConstants.easyLevelExp.length; i += 1) { + const expPerLevel = skyWarsLevelConstants.easyLevelExp[i]; + expAcc += expPerLevel; + if (currentExp < expAcc) { + level = i; + expAcc -= expPerLevel; + break; + } + } + if (level === -1) { + level = + skyWarsLevelConstants.easyLevelExp.length + + Math.floor((currentExp - expAcc) / skyWarsLevelConstants.expPerLevel); + expAcc += + (level - skyWarsLevelConstants.easyLevelExp.length) * + skyWarsLevelConstants.expPerLevel; + } + const expToLevel = expAcc; + const nextLevelExp = + expToLevel + + (level < skyWarsLevelConstants.easyLevelExp.length + ? skyWarsLevelConstants.easyLevelExp[level] + : skyWarsLevelConstants.expPerLevel); + const expToNextLevel = nextLevelExp - expToLevel; + const expInCurrentLevel = currentExp - expToLevel; + const remainingExpToNextLevel = nextLevelExp - currentExp; + const nextLevelProgress = expInCurrentLevel / expToNextLevel; + const preciseLevel = level + nextLevelProgress; + const info = ({ + level, + preciseLevel, + currentExp, + expToLevel, + expToNextLevel, + remainingExpToNextLevel, + } as never) as SkyWarsLevelInfoAndPrestige; + if (includePrestige !== true) { + return info; + } + + info.prestige = getSkyWarsPrestigeForLevel(level); + info.expToPrestige = totalExpToSkyWarsLevel(info.prestige.minimumLevel); + const prestigeIndex = SkyWarsPrestiges.indexOf(info.prestige); + if (prestigeIndex + 1 === SkyWarsPrestiges.length) { + return info; + } + info.nextPrestige = SkyWarsPrestiges[prestigeIndex + 1]; + info.expToNextPrestige = totalExpToSkyWarsLevel( + info.nextPrestige.minimumLevel + ); + info.remainingExpToNextPrestige = info.expToNextPrestige - info.currentExp; + info.progressToNextPrestige = info.currentExp / info.expToNextPrestige; + return info; +} diff --git a/deno_dist/helpers/SkyWarsPrestige.ts b/deno_dist/helpers/SkyWarsPrestige.ts new file mode 100644 index 00000000..a0af336e --- /dev/null +++ b/deno_dist/helpers/SkyWarsPrestige.ts @@ -0,0 +1,220 @@ +/** + * This portion of code was ported from the [hypixel-php](https://github.com/Plancke/hypixel-php) library. + * + * Copyright (c) 2021 Zikeji + * Copyright (c) 2017 Aäron Plancke + * + * For the original full copyright and license information, please view the LICENSE-HYPIXEL-PHP.md that was distributed with this source code. + */ + +import { + MinecraftColorAsHex, + MinecraftFormatting, +} from "./MinecraftFormatting.ts"; + +/** + * Describes the properties of a Prestige object returned by {@link getSkyWarsPrestigeForLevel}. + */ +export interface SkyWarsPrestige { + id: string; + name: string; + color: MinecraftFormatting; + colorHex: MinecraftColorAsHex; + minimumLevel: number; + icon: { + version: number; + material: string; + typeId: number; + data: number; + }; + textIcon: string | null; +} + +/** + * An array of the prestiges in SkyWars, listed in order of lowest to highest. + */ +export const SkyWarsPrestiges: SkyWarsPrestige[] = [ + { + id: "NONE", + name: "None", + color: MinecraftFormatting.GRAY, + colorHex: MinecraftColorAsHex[MinecraftFormatting.GRAY], + minimumLevel: 1, + icon: { + version: 1, + material: "COAL", + typeId: 263, + data: 0, + }, + textIcon: null, + }, + { + id: "IRON", + name: "Iron", + color: MinecraftFormatting.WHITE, + colorHex: MinecraftColorAsHex[MinecraftFormatting.WHITE], + minimumLevel: 5, + icon: { + version: 1, + material: "IRON_INGOT", + typeId: 265, + data: 0, + }, + textIcon: "✙", + }, + { + id: "GOLD", + name: "Gold", + color: MinecraftFormatting.GOLD, + colorHex: MinecraftColorAsHex[MinecraftFormatting.GOLD], + minimumLevel: 10, + icon: { + version: 1, + material: "GOLD_INGOT", + typeId: 266, + data: 0, + }, + textIcon: "❤", + }, + { + id: "DIAMOND", + name: "Diamond", + color: MinecraftFormatting.AQUA, + colorHex: MinecraftColorAsHex[MinecraftFormatting.AQUA], + minimumLevel: 15, + icon: { + version: 1, + material: "DIAMOND", + typeId: 264, + data: 0, + }, + textIcon: "☠", + }, + { + id: "EMERALD", + name: "Emerald", + color: MinecraftFormatting.DARK_GREEN, + colorHex: MinecraftColorAsHex[MinecraftFormatting.DARK_GREEN], + minimumLevel: 20, + icon: { + version: 1, + material: "EMERALD", + typeId: 388, + data: 0, + }, + textIcon: "✦", + }, + { + id: "SAPPHIRE", + name: "Sapphire", + color: MinecraftFormatting.DARK_AQUA, + colorHex: MinecraftColorAsHex[MinecraftFormatting.DARK_AQUA], + minimumLevel: 25, + icon: { + version: 1, + material: "SKULL_ITEM", + typeId: 397, + data: 3, + }, + textIcon: "✌", + }, + { + id: "RUBY", + name: "Ruby", + color: MinecraftFormatting.DARK_RED, + colorHex: MinecraftColorAsHex[MinecraftFormatting.DARK_RED], + minimumLevel: 30, + icon: { + version: 1, + material: "SKULL_ITEM", + typeId: 397, + data: 3, + }, + textIcon: "❦", + }, + { + id: "CRYSTAL", + name: "Crystal", + color: MinecraftFormatting.LIGHT_PURPLE, + colorHex: MinecraftColorAsHex[MinecraftFormatting.LIGHT_PURPLE], + minimumLevel: 35, + icon: { + version: 1, + material: "QUARTZ", + typeId: 406, + data: 0, + }, + textIcon: "✵", + }, + { + id: "OPAL", + name: "Opal", + color: MinecraftFormatting.BLUE, + colorHex: MinecraftColorAsHex[MinecraftFormatting.BLUE], + minimumLevel: 40, + icon: { + version: 1, + material: "SKULL_ITEM", + typeId: 397, + data: 3, + }, + textIcon: "❣", + }, + { + id: "AMETHYST", + name: "Amethyst", + color: MinecraftFormatting.DARK_PURPLE, + colorHex: MinecraftColorAsHex[MinecraftFormatting.DARK_PURPLE], + minimumLevel: 45, + icon: { + version: 1, + material: "SKULL_ITEM", + typeId: 397, + data: 3, + }, + textIcon: "☯", + }, + { + id: "RAINBOW", + name: "Rainbow", + color: MinecraftFormatting.WHITE, + colorHex: MinecraftColorAsHex[MinecraftFormatting.WHITE], + minimumLevel: 50, + icon: { + version: 1, + material: "SKULL_ITEM", + typeId: 397, + data: 3, + }, + textIcon: "✺", + }, + { + id: "MYTHIC", + name: "Mythic", + color: MinecraftFormatting.WHITE, + colorHex: MinecraftColorAsHex[MinecraftFormatting.WHITE], + minimumLevel: 60, + icon: { + version: 1, + material: "SKULL_ITEM", + typeId: 397, + data: 1, + }, + textIcon: "ಠ_ಠ", + }, +]; + +/** + * Returns a {@link SkyWarsPrestige} object for the level you supplied. + * @param level The level of the player you are checking. TODO: obtain + */ +export function getSkyWarsPrestigeForLevel(level: number): SkyWarsPrestige { + if (typeof level !== "number" || level < 1) { + throw new TypeError("Not a valid level."); + } + return SkyWarsPrestiges.reduceRight( + (acc, prestige) => + acc.id === "NONE" && level >= prestige.minimumLevel ? prestige : acc, + SkyWarsPrestiges[0] + ); +} diff --git a/deno_dist/helpers/TransformItemData.ts b/deno_dist/helpers/TransformItemData.ts new file mode 100644 index 00000000..068c4c04 --- /dev/null +++ b/deno_dist/helpers/TransformItemData.ts @@ -0,0 +1,204 @@ +import { Buffer } from "https://deno.land/std@0.85.0/node/buffer.ts"; +import { parse } from "../util/NBT.ts"; + +/** + * Array of inventory slots. If that slot is empty it will be null, otherwise it will be an object containing the data. + */ +export type NBTInventory = (NBTInventoryItem | null)[]; + +/** + * The NBT information for a slot in the inventory you are reading. + */ +export interface NBTInventoryItem { + /** Minecraft Item ID of this item. */ + id: number; + /** Amount of items in this inventory slot. */ + Count: number; + Damage: number; + /** NBT tag data for this item. */ + tag?: NBTTag; +} + +/** + * If an inventory slot contains tag data, this interface describes possible values commonly seen in observations of the inventory data. + */ +export interface NBTTag { + Unbreakable?: number; + HideFlags?: number; + display?: NBTDisplay; + ExtraAttributes?: NBTExtraAttributes; + ench?: NBTEnch[]; + SkullOwner?: NBTSkullOwner; + CustomPotionEffects?: NBTCustomPotionEffect[]; +} + +/** + * An extremely common {@link NBTTag} property containing the name and lore that show up when you hover over the item. + */ +export interface NBTDisplay { + Lore?: string[]; + Name?: string; + color?: number; +} + +/** + * Extra attributes that appear on extraAttributes property of the {@link NBTTag} property. Commonly used to describe items in more detail and their underlying settings. + */ +export interface NBTExtraAttributes { + [key: string]: + | string + | number + | number[] + | { [name: string]: number } + | NBTExtraAttributesPotionEffect[] + | NBTInventory + | undefined; + id: string; + uuid?: string; + timestamp?: string; + originTag?: string; + modifier?: string; + color?: string; + anvil_uses?: number; + /** + * Each key is an enchantment type and the level. e.g. "telekinesis" or "impaling" + */ + enchantments: { + [name: string]: number; + }; + hot_potato_count?: number; + rarity_upgrades?: number; + dungeon_item_level?: number; + backpack_color?: string; + runes?: { [name: string]: number }; + potion_level?: number; + potion?: string; + effects?: NBTExtraAttributesPotionEffect[]; + potion_type?: string; + splash?: number; + potion_name?: string; + /** The contents of the backpack. */ + small_backpack_data?: NBTInventory; + /** The contents of the backpack. */ + medium_backpack_data?: NBTInventory; + /** The contents of the backpack. */ + large_backpack_data?: NBTInventory; + /** The contents of the backpack. */ + greater_backpack_data?: NBTInventory; + /** The contents of the backpack. */ + jumbo_backpack_data?: NBTInventory; + /** The contents of the cake bag. */ + new_year_cake_bag_data?: NBTInventory; +} + +/** + * If the inventory item is a potion, this property will describe the effects of that potion. + */ +export interface NBTExtraAttributesPotionEffect { + level: number; + effect: string; + duration_ticks: number; +} + +/** + * Basic enchantment information for the inventory item. + */ +export interface NBTEnch { + id: number; + lvl: number; +} + +/** + * If the {@link NBTInventoryItem} is a skull type this will describe it's skull information. + */ +export interface NBTSkullOwner { + Id: string; + Properties: { + timestamp?: number; + profileId?: number; + profileName?: number; + signatureRequired?: boolean; + textures: { + SKIN: { + /** Minecraft CDN link to the texture. */ + url: string; + }; + }; + } | null; + /** + * If the original textures array had more than 1 element, the first will appear under Properties and the remainder will appear in this array below. + */ + ExtraProperties?: NonNullable[]; +} + +/** + * Generally shows up on SkyBlock unique potions. + */ +export interface NBTCustomPotionEffect { + Ambient: number; + Duration: number; + Id: number; + Amplifier: number; +} + +/** + * This helper will transform NBT data into a typed object using prismarine-nbt. It will also transform any backpacks/bags with item data so you can explore those as well. + * @param value A Base64 item data string, NBT byte array, or buffer. If Deno, no Buffer but a Uint8Array is supported. + * @category Helper + */ +export async function transformItemData( + value: Parameters[number] +): Promise { + const data = await parse(value); + return Promise.all( + data.map( + async (item): Promise => { + if (Object.entries(item).length === 0) { + return null; + } + /* istanbul ignore else */ + if (item.tag) { + if (item.tag.SkullOwner) { + const skullOwner: { + Properties: { textures: { Value: string }[] }; + } = item.tag.SkullOwner as never; + const propertiesData = skullOwner.Properties.textures.shift(); + /* istanbul ignore else */ + if (propertiesData) { + item.tag.SkullOwner.Properties = JSON.parse( + Buffer.from(propertiesData.Value, "base64").toString() + ); + /* istanbul ignore if */ + if (skullOwner.Properties.textures.length > 0) { + item.tag.SkullOwner.ExtraProperties = skullOwner.Properties.textures.map( + ({ Value }) => + JSON.parse(Buffer.from(Value, "base64").toString()) + ); + } + } else { + item.tag.SkullOwner.Properties = null; + } + } + if (item.tag.ExtraAttributes) { + const extraAttributes = item.tag + .ExtraAttributes as NBTExtraAttributes; + await Promise.all( + Object.keys(extraAttributes).map(async (key) => { + /* istanbul ignore if */ + if ( + key.endsWith("_backpack_data") || + key.endsWith("_bag_data") + ) { + extraAttributes[key] = await transformItemData( + extraAttributes[key] as number[] + ); + } + }) + ); + } + } + return item; + } + ) + ); +} diff --git a/deno_dist/helpers/TransformSkyBlockItemData.ts b/deno_dist/helpers/TransformSkyBlockItemData.ts new file mode 100644 index 00000000..a577b4f3 --- /dev/null +++ b/deno_dist/helpers/TransformSkyBlockItemData.ts @@ -0,0 +1,66 @@ +import { Components } from "../types/api.ts"; +import { NBTInventory, transformItemData } from "./TransformItemData.ts"; + +/** + * Interface used in the {@link SkyBlockProfileMemberWithTransformedInventories} intersection to describe the intellisense for the inventory after being transformed. + */ +export interface SkyBlockProfileTransformedInventories { + inv_armor: NBTInventory; + candy_inventory_contents?: NBTInventory; + ender_chest_contents?: NBTInventory; + fishing_bag?: NBTInventory; + inv_contents?: NBTInventory; + potion_bag?: NBTInventory; + quiver?: NBTInventory; + talisman_bag?: NBTInventory; + wardrobe_contents?: NBTInventory; +} + +/** + * This type is a intersection type omitting the default inventory types and including the transformed inventory types. + */ +export type SkyBlockProfileMemberWithTransformedInventories = Omit< + Components.Schemas.SkyBlockProfileMember, + keyof SkyBlockProfileTransformedInventories +> & + SkyBlockProfileTransformedInventories; + +/** @internal */ +const SKYBLOCK_INVENTORIES: (keyof SkyBlockProfileTransformedInventories)[] = [ + "inv_armor", + "candy_inventory_contents", + "ender_chest_contents", + "fishing_bag", + "inv_contents", + "potion_bag", + "quiver", + "talisman_bag", + "wardrobe_contents", +]; + +/** + * This helper will loop over all the possible inventories on a profile and run the {@link transformSkyBlockItemData} helper on them, returning the member object with the transformed properties. + * @param member The profile member object that you want to transform the inventory data of. + * @category Helper + */ +export async function transformSkyBlockProfileMemberInventories( + member: Components.Schemas.SkyBlockProfileMember +): Promise { + const transformedMember: SkyBlockProfileMemberWithTransformedInventories = member as never; + await Promise.all( + SKYBLOCK_INVENTORIES.map(async (key) => { + const inventoryData: Components.Schemas.SkyBlockProfileInventoryData = transformedMember[ + key + ] as never; + if (inventoryData && inventoryData.data) { + try { + transformedMember[key] = await transformItemData(inventoryData.data); + } catch (e) { + /* istanbul ignore next */ + delete transformedMember[key]; + } + } + }) + ); + return transformedMember; +} diff --git a/deno_dist/index.ts b/deno_dist/index.ts new file mode 100644 index 00000000..5c03cc3c --- /dev/null +++ b/deno_dist/index.ts @@ -0,0 +1,30 @@ +export * from "./Client.ts"; +export * from "./errors/GenericHTTPError.ts"; +export * from "./errors/InvalidKeyError.ts"; +export * from "./errors/RateLimitError.ts"; +export * from "./helpers/BedwarsLevelInfo.ts"; +export * from "./helpers/GuildLevel.ts"; +export * from "./helpers/MinecraftFormatting.ts"; +export * from "./helpers/NetworkLevel.ts"; +export * from "./helpers/PlayerRank.ts"; +export * from "./helpers/Romanize.ts"; +export * from "./helpers/SkyBlockCollections.ts"; +export * from "./helpers/SkyBlockSkills.ts"; +export * from "./helpers/SkyWarsLevelInfo.ts"; +export * from "./helpers/SkyWarsPrestige.ts"; +export * from "./helpers/TransformItemData.ts"; +export * from "./helpers/TransformSkyBlockItemData.ts"; +export * from "./methods/findGuild.ts"; +export * from "./methods/friends.ts"; +export * from "./methods/guild.ts"; +export * from "./methods/player.ts"; +export * from "./methods/recentGames.ts"; +export * from "./methods/resources/index.ts"; +export * from "./methods/resources/guilds.ts"; +export * from "./methods/resources/skyblock.ts"; +export * from "./methods/skyblock/index.ts"; +export * from "./methods/skyblock/auction.ts"; +export * from "./methods/skyblock/auctions.ts"; +export * from "./methods/skyblock/profiles.ts"; +export * from "./methods/status.ts"; +export * from "./types/api.ts"; diff --git a/deno_dist/methods/findGuild.ts b/deno_dist/methods/findGuild.ts new file mode 100644 index 00000000..ffb6513b --- /dev/null +++ b/deno_dist/methods/findGuild.ts @@ -0,0 +1,47 @@ +import { Components, Paths } from "../types/api.ts"; +import { Method } from "../util/Method.ts"; +import { getResultObject, ResultObject } from "../util/ResultObject.ts"; + +export class FindGuild extends Method { + /** + * Returns the id of the requested guild if found. + * @example + * ```typescript + * const { guild } = await client.findGuild.byName("Mini Squid"); + * console.log(boosters); + * // 553490650cf26f12ae5bac8f + * ``` + * @category API + */ + public async byName( + name: Components.Parameters.ByGuildName.ByName + ): Promise> { + return getResultObject( + await this.client.call("findGuild", { + byName: name, + }), + ["success"] + ) as never; + } + + /** + * Returns the id of the requested guild if found. + * @example + * ```typescript + * const { guild } = await client.findGuild.byUuid("20934ef9488c465180a78f861586b4cf"); + * console.log(guild); + * // 553490650cf26f12ae5bac8f + * ``` + * @category API + */ + public async byUuid( + uuid: Components.Parameters.ByUuid.ByUuid + ): Promise> { + return getResultObject( + await this.client.call("findGuild", { + byUuid: uuid, + }), + ["success"] + ) as never; + } +} diff --git a/deno_dist/methods/friends.ts b/deno_dist/methods/friends.ts new file mode 100644 index 00000000..83b933a6 --- /dev/null +++ b/deno_dist/methods/friends.ts @@ -0,0 +1,25 @@ +import { Components, Paths } from "../types/api.ts"; +import { Method } from "../util/Method.ts"; +import { getResultArray, ResultArray } from "../util/ResultArray.ts"; + +export class Friends extends Method { + /** + * Returns friendships for given player. + * @example + * ```typescript + * const friends = await client.friends.uuid("20934ef9488c465180a78f861586b4cf"); + * console.log(friends); + * ``` + * @category API + */ + public async uuid( + uuid: Components.Parameters.PlayerUuid.Uuid + ): Promise> { + return getResultArray( + await this.client.call("friends", { + uuid, + }), + "records" + ) as never; + } +} diff --git a/deno_dist/methods/guild.ts b/deno_dist/methods/guild.ts new file mode 100644 index 00000000..6dbd2bf6 --- /dev/null +++ b/deno_dist/methods/guild.ts @@ -0,0 +1,62 @@ +import { Paths } from "../types/api.ts"; +import { Method } from "../util/Method.ts"; +import { getResultObject, ResultObject } from "../util/ResultObject.ts"; + +export class Guild extends Method { + /** + * Returns the guild by the requested ID if found. + * @example + * ```typescript + * const guild = await client.guild.id("553490650cf26f12ae5bac8f"); + * ``` + * @category API + */ + public async id( + id: Paths.Guild.Get.Parameters.Id + ): Promise> { + return getResultObject( + await this.client.call("guild", { + id, + }), + ["guild"] + ) as never; + } + + /** + * Returns the guild by the requested player's UUID if found. + * @example + * ```typescript + * const guild = await client.guild.player("20934ef9488c465180a78f861586b4cf"); + * ``` + * @category API + */ + public async player( + player: Paths.Guild.Get.Parameters.Player + ): Promise> { + return getResultObject( + await this.client.call("guild", { + player, + }), + ["guild"] + ) as never; + } + + /** + * Returns the guild by the requested guild name if found. + * @example + * ```typescript + * const guild = await client.guild.name("Mini Squid"); + * ``` + * @category API + */ + public async name( + name: Paths.Guild.Get.Parameters.Name + ): Promise> { + return getResultObject( + await this.client.call("guild", { + name, + }), + ["guild"] + ) as never; + } +} diff --git a/deno_dist/methods/player.ts b/deno_dist/methods/player.ts new file mode 100644 index 00000000..00ec6cf0 --- /dev/null +++ b/deno_dist/methods/player.ts @@ -0,0 +1,25 @@ +import { Components, Paths } from "../types/api.ts"; +import { Method } from "../util/Method.ts"; +import { ResultObject, getResultObject } from "../util/ResultObject.ts"; + +export class Player extends Method { + /** + * Returns a player's data, such as game stats. + * @example + * ```typescript + * const player = await client.player.uuid("20934ef9488c465180a78f861586b4cf"); + * console.log(player); + * ``` + * @category API + */ + public async uuid( + uuid: Components.Parameters.PlayerUuid.Uuid + ): Promise> { + return getResultObject( + await this.client.call("player", { + uuid, + }), + ["player"] + ) as never; + } +} diff --git a/deno_dist/methods/recentGames.ts b/deno_dist/methods/recentGames.ts new file mode 100644 index 00000000..81abde7e --- /dev/null +++ b/deno_dist/methods/recentGames.ts @@ -0,0 +1,28 @@ +import { Components, Paths } from "../types/api.ts"; +import { Method } from "../util/Method.ts"; +import { getResultArray, ResultArray } from "../util/ResultArray.ts"; + +export class RecentGames extends Method { + /** + * Returns recent games of a player. A maximum of 100 games are returned and recent games are only stored for up to 3 days at this time. + * @example + * ```typescript + * const response = await client.recentGames.uuid("20934ef9488c465180a78f861586b4cf"); + * console.log(response); + * ``` + * @category API + */ + public async uuid( + uuid: Components.Parameters.PlayerUuidRequired.Uuid + ): Promise> { + return getResultArray( + await this.client.call( + "recentGames", + { + uuid, + } + ), + "games" + ); + } +} diff --git a/deno_dist/methods/resources/guilds.ts b/deno_dist/methods/resources/guilds.ts new file mode 100644 index 00000000..fab4d775 --- /dev/null +++ b/deno_dist/methods/resources/guilds.ts @@ -0,0 +1,50 @@ +import { Paths } from "../../types/api.ts"; +import { Method } from "../../util/Method.ts"; +import { getResultObject, ResultObject } from "../../util/ResultObject.ts"; +import { getResultArray, ResultArray } from "../../util/ResultArray.ts"; + +export class GuildsResources extends Method { + /** + * Retrieve a list of achievements a Hypixel guild can accomplish. + * @example + * ```typescript + * const achievements = await client.resources.guilds.achievements(); + * ``` + * @category API + */ + public async achievements(): Promise< + ResultObject< + Paths.ResourcesGuildsAchievements.Get.Responses.$200, + ["success", "lastUpdated"] + > + > { + return getResultObject( + await this.client.call( + "resources/guilds/achievements" + ), + ["success", "lastUpdated"] + ); + } + + /** + * Retrieve a list of permissions that a Hypixel guild master can use. + * @example + * ```typescript + * const permissions = await client.resources.guilds.permissions(); + * ``` + * @category API + */ + public async permissions(): Promise< + ResultArray< + Paths.ResourcesGuildsPermissions.Get.Responses.$200, + "permissions" + > + > { + return getResultArray( + await this.client.call( + "resources/guilds/permissions" + ), + "permissions" + ); + } +} diff --git a/deno_dist/methods/resources/index.ts b/deno_dist/methods/resources/index.ts new file mode 100644 index 00000000..f60374dd --- /dev/null +++ b/deno_dist/methods/resources/index.ts @@ -0,0 +1,79 @@ +import { Paths } from "../../types/api.ts"; +import { Method } from "../../util/Method.ts"; +import { getResultObject, ResultObject } from "../../util/ResultObject.ts"; +import { GuildsResources } from "./guilds.ts"; +import { SkyBlockResources } from "./skyblock.ts"; + +export class Resources extends Method { + /** + * Returns all the achievements for each gamemode on the Hypixel network. + * @example + * ```typescript + * const achievements = await client.resources.achievements(); + * ``` + * @category API + */ + public async achievements(): Promise< + ResultObject< + Paths.ResourcesAchievements.Get.Responses.$200, + ["achievements"] + > + > { + return getResultObject( + await this.client.call( + "resources/achievements" + ), + ["achievements"] + ); + } + + /** + * Returns all the challenges for each gamemode on the Hypixel network. + * @example + * ```typescript + * const challenges = await client.resources.challenges(); + * ``` + * @category API + */ + public async challenges(): Promise< + ResultObject + > { + return getResultObject( + await this.client.call( + "resources/challenges" + ), + ["challenges"] + ); + } + + /** + * Returns all the quests for each gamemode on the Hypixel network. + * @example + * ```typescript + * const quests = await client.resources.quests(); + * ``` + * @category API + */ + public async quests(): Promise< + ResultObject + > { + return getResultObject( + await this.client.call( + "resources/quests" + ), + ["quests"] + ); + } + + /** + * Guild related resources. + * @category API + */ + public guilds: GuildsResources = new GuildsResources(this.client); + + /** + * SkyBlock related resources. + * @category API + */ + public skyblock: SkyBlockResources = new SkyBlockResources(this.client); +} diff --git a/deno_dist/methods/resources/skyblock.ts b/deno_dist/methods/resources/skyblock.ts new file mode 100644 index 00000000..085d76f9 --- /dev/null +++ b/deno_dist/methods/resources/skyblock.ts @@ -0,0 +1,42 @@ +import { Paths } from "../../types/api.ts"; +import { Method } from "../../util/Method.ts"; +import { getResultObject, ResultObject } from "../../util/ResultObject.ts"; + +export class SkyBlockResources extends Method { + /** + * Returns the list of ingame collections. + * @return An object of [[Collection | Collection interface]] objects. + * @category API + */ + public async collections(): Promise< + ResultObject< + Paths.ResourcesSkyblockCollections.Get.Responses.$200, + ["collections"] + > + > { + return getResultObject( + await this.client.call( + "resources/skyblock/collections" + ), + ["collections"] + ); + } + + /** + * Returns the current skills from the SkyBlock gamemode. + * @category API + */ + public async skills(): Promise< + ResultObject< + Paths.ResourcesSkyblockSkills.Get.Responses.$200, + ["collections"] + > + > { + return getResultObject( + await this.client.call( + "resources/skyblock/skills" + ), + ["collections"] + ); + } +} diff --git a/deno_dist/methods/skyblock/auction.ts b/deno_dist/methods/skyblock/auction.ts new file mode 100644 index 00000000..6f14794c --- /dev/null +++ b/deno_dist/methods/skyblock/auction.ts @@ -0,0 +1,71 @@ +import { Paths } from "../../types/api.ts"; +import { Method } from "../../util/Method.ts"; +import { getResultArray, ResultArray } from "../../util/ResultArray.ts"; + +export class SkyBlockAuction extends Method { + /** + * Returns SkyBlock auctions by either player, profile or auction uuid. Only "active" auctions are returned, these are auctions that are still open or that have not had all bids/items claimed. + * @example + * ```typescript + * const auctions = await client.skyblock.auction.player("347ef6c1daac45ed9d1fa02818cf0fb6"); + * ``` + * @category API + */ + public async player( + player: Paths.SkyblockAuction.Get.Parameters.Player + ): Promise< + ResultArray + > { + return getResultArray( + await this.client.call( + "skyblock/auction", + { player } + ), + "auctions" + ); + } + + /** + * Returns SkyBlock auctions by either player, profile or auction uuid. Only "active" auctions are returned, these are auctions that are still open or that have not had all bids/items claimed. + * @example + * ```typescript + * const auctions = await client.skyblock.auction.profile("347ef6c1daac45ed9d1fa02818cf0fb6"); + * ``` + * @category API + */ + public async profile( + profile: Paths.SkyblockAuction.Get.Parameters.Profile + ): Promise< + ResultArray + > { + return getResultArray( + await this.client.call( + "skyblock/auction", + { profile } + ), + "auctions" + ); + } + + /** + * Returns SkyBlock auctions by either player, profile or auction uuid. Only "active" auctions are returned, these are auctions that are still open or that have not had all bids/items claimed. + * @example + * ```typescript + * const auctions = await client.skyblock.auction.uuid("409a1e0f261a49849493278d6cd9305a"); + * ``` + * @category API + */ + public async uuid( + uuid: Paths.SkyblockAuction.Get.Parameters.Uuid + ): Promise< + ResultArray + > { + return getResultArray( + await this.client.call( + "skyblock/auction", + { uuid } + ), + "auctions" + ); + } +} diff --git a/deno_dist/methods/skyblock/auctions.ts b/deno_dist/methods/skyblock/auctions.ts new file mode 100644 index 00000000..7ce91996 --- /dev/null +++ b/deno_dist/methods/skyblock/auctions.ts @@ -0,0 +1,27 @@ +import { Paths } from "../../types/api.ts"; +import { Method } from "../../util/Method.ts"; +import { getResultObject, ResultObject } from "../../util/ResultObject.ts"; + +export class SkyBlockAuctions extends Method { + /** + * Returns SkyBlock auctions that are currently active in the in-game Auction House. + * @example + * ```typescript + * const { auctions } = await client.skyblock.auctions.page(0); + * ``` + * @category API + */ + public async page( + page: Paths.SkyblockAuctions.Get.Parameters.Page = 0 + ): Promise< + ResultObject + > { + return getResultObject( + await this.client.call( + "skyblock/auctions", + { page: page.toString(10) } + ), + ["success"] + ); + } +} diff --git a/deno_dist/methods/skyblock/index.ts b/deno_dist/methods/skyblock/index.ts new file mode 100644 index 00000000..d45ecb92 --- /dev/null +++ b/deno_dist/methods/skyblock/index.ts @@ -0,0 +1,120 @@ +import { Paths } from "../../types/api.ts"; +import { Method } from "../../util/Method.ts"; +import { getResultArray, ResultArray } from "../../util/ResultArray.ts"; +import { getResultObject, ResultObject } from "../../util/ResultObject.ts"; +import { SkyBlockAuction } from "./auction.ts"; +import { SkyBlockAuctions } from "./auctions.ts"; +import { SkyBlockProfiles } from "./profiles.ts"; + +export class SkyBlock extends Method { + /** + * Returns SkyBlock auctions by either player, profile or auction uuid. Only "active" auctions are returned, these are auctions that are still open or that have not had all bids/items claimed. + * @example + * ```typescript + * let auctions = await client.skyblock.auction.player("347ef6c1daac45ed9d1fa02818cf0fb6"); + * auctions = await client.skyblock.auction.profile("347ef6c1daac45ed9d1fa02818cf0fb6"); + * auctions = await client.skyblock.auction.uuid("409a1e0f261a49849493278d6cd9305a"); + * ``` + * @category API + */ + public auction: SkyBlockAuction = new SkyBlockAuction(this.client); + + /** + * Returns SkyBlock auctions that are currently active in the in-game Auction House. + * @example + * ```typescript + * const { auctions } = await client.skyblock.auctions.page(0); + * ``` + * @category API + */ + public auctions: SkyBlockAuctions = new SkyBlockAuctions(this.client); + + /** + * Returns SkyBlock auctions which ended in the last 60 seconds (More precisely, whatever time is defined in the "Cache-Control" header of the response). + * @example + * ```typescript + * const { auctions } = await client.skyblock.auctions_ended(); + * ``` + * @category API + */ + public async auctions_ended(): Promise< + ResultObject + > { + return getResultObject( + await this.client.call( + "skyblock/auctions_ended" + ), + ["success"] + ); + } + + /** + * Returns the list of [products](https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/skyblock/bazaar.md#product-description) along with their sell summary, buy summary and quick status. + * @example + * ```typescript + * const products = await client.skyblock.bazaar(); + * ``` + * @category API + */ + public async bazaar(): Promise< + ResultObject + > { + return getResultObject( + await this.client.call( + "skyblock/bazaar" + ), + ["products"] + ); + } + + /** + * Returns SkyBlock news, including a title, description and a thread. + * @example + * ```typescript + * const news = await client.skyblock.news(); + * ``` + * @category API + */ + public async news(): Promise< + ResultArray + > { + return getResultArray( + await this.client.call( + "skyblock/news" + ), + "items" + ); + } + + /** + * Returns a SkyBlock profile's data, such as stats, objectives etc. The data returned can differ depending on the players in-game API settings. + * @example + * ```typescript + * const news = await client.skyblock.profile("20934ef9488c465180a78f861586b4cf"); + * ``` + * @category API + */ + public async profile( + profile: Paths.SkyblockProfile.Get.Parameters.Profile + ): Promise< + ResultObject + > { + return getResultObject( + await this.client.call( + "skyblock/profile", + { profile } + ), + ["profile"] + ); + } + + /** + * Returns an array SkyBlock profile's data, such as stats, objectives etc. The data returned can differ depending on the players in-game API settings. The request takes a player UUID. + * @example + * ```typescript + * const profiles = await client.skyblock.profiles.uuid("20934ef9488c465180a78f861586b4cf"); + * ``` + * @category API + */ + public profiles: SkyBlockProfiles = new SkyBlockProfiles(this.client); +} diff --git a/deno_dist/methods/skyblock/profiles.ts b/deno_dist/methods/skyblock/profiles.ts new file mode 100644 index 00000000..a3a972d8 --- /dev/null +++ b/deno_dist/methods/skyblock/profiles.ts @@ -0,0 +1,27 @@ +import { Components, Paths } from "../../types/api.ts"; +import { Method } from "../../util/Method.ts"; +import { getResultArray, ResultArray } from "../../util/ResultArray.ts"; + +export class SkyBlockProfiles extends Method { + /** + * Returns an array SkyBlock profile's data, such as stats, objectives etc. The data returned can differ depending on the players in-game API settings. The request takes a player UUID. + * @example + * ```typescript + * const profiles = await client.skyblock.profiles.uuid("20934ef9488c465180a78f861586b4cf"); + * ``` + * @category API + */ + public async uuid( + uuid: Components.Parameters.PlayerUuidRequired.Uuid + ): Promise< + ResultArray + > { + return getResultArray( + await this.client.call( + "skyblock/profiles", + { uuid } + ), + "profiles" + ); + } +} diff --git a/deno_dist/methods/status.ts b/deno_dist/methods/status.ts new file mode 100644 index 00000000..e03e5e88 --- /dev/null +++ b/deno_dist/methods/status.ts @@ -0,0 +1,25 @@ +import { Components, Paths } from "../types/api.ts"; +import { Method } from "../util/Method.ts"; +import { ResultObject, getResultObject } from "../util/ResultObject.ts"; + +export class Status extends Method { + /** + * Returns online status information for given player, including game, mode and map when available. + * @example + * ```typescript + * const response = await client.status.uuid("20934ef9488c465180a78f861586b4cf"); + * console.log(response); + * ``` + * @category API + */ + public async uuid( + uuid: Components.Parameters.PlayerUuid.Uuid + ): Promise> { + return getResultObject( + await this.client.call("status", { + uuid, + }), + ["session"] + ) as never; + } +} diff --git a/deno_dist/mod.ts b/deno_dist/mod.ts new file mode 100644 index 00000000..da5ee324 --- /dev/null +++ b/deno_dist/mod.ts @@ -0,0 +1 @@ +export * from "./index.ts"; \ No newline at end of file diff --git a/deno_dist/openapi.yaml b/deno_dist/openapi.yaml new file mode 100644 index 00000000..a5c7a629 --- /dev/null +++ b/deno_dist/openapi.yaml @@ -0,0 +1,14088 @@ +openapi: 3.0.1 +info: + title: Hypixel Public API + description: > + ## Query Limitations + + The API server has a request limit of 120 queries per minute. Any abuse of + the API or intentions to bypass this limit (such as with multiple API keys) + will lead to your API key being reset or banned. + + + If you require a higher limit than the above you can open a support ticket + at [https://support.hypixel.net](https://support.hypixel.net) and provide + your use case and why you require a higher limit. + + ## Obtaining an API Key + + You can obtain an API key by joining `mc.hypixel.net` with a valid Minecraft + account and running the /api command. You will then be assigned a unique key + that is to remain **private**. + version: unknown +externalDocs: + description: GitHub Documentation + url: 'https://github.com/HypixelDev/PublicAPI/tree/master/Documentation' +servers: + - url: 'https://api.hypixel.net' +security: + - apiKey: [] +tags: + - name: skyblock + description: Methods related to the SkyBlock game mode. + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/tree/master/Documentation/methods/skyblock +paths: + /boosters: + get: + tags: + - metadata + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/boosters.md + summary: Returns list of boosters. + description: | + #### Usage + ```typescript + const boosters = await client.boosters(); + ``` + responses: + '200': + description: An object describing the current boosters. + headers: + ratelimit-limit: + $ref: '#/components/headers/ratelimit-limit' + ratelimit-remaining: + $ref: '#/components/headers/ratelimit-remaining' + ratelimit-reset: + $ref: '#/components/headers/ratelimit-reset' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + boosters: + type: array + items: + type: object + properties: + _id: + type: string + purchaserUuid: + type: string + amount: + type: number + originalLength: + type: number + length: + type: number + gameType: + type: number + stacked: + anyOf: + - type: boolean + - type: array + items: + type: string + dateActivated: + type: number + required: + - _id + - purchaserUuid + - amount + - originalLength + - length + - gameType + - dateActivated + boosterState: + type: object + properties: + decrementing: + type: boolean + required: + - decrementing + example: + boosters: + - _id: 5c197fadc8f245280926413d + purchaserUuid: 978ddb705a8e43618e41749178c020b0 + amount: 2 + originalLength: 3600 + length: 3595 + gameType: 24 + stacked: true + dateActivated: 1545244519133 + - _id: 5e8c92270cf287986cd00dbf + purchaserUuid: dfe1bb0a4220421486506ba487cdb530 + amount: 3 + originalLength: 3600 + length: 3600 + gameType: 23 + dateActivated: 1586351429371 + stacked: true + - _id: 5fa1dc680cf24688841100c6 + purchaserUuid: e1b2397ee9ef4809a312fc3ee2d4bdbd + amount: 3 + originalLength: 3600 + length: 3393 + gameType: 20 + dateActivated: 1604443410659 + stacked: + - bf9afb33-c4ab-4eee-afa7-108403ba6532 + - ef0e153b-d489-435d-b5f7-0e712c1a6bf9 + - 99e62635-bf44-4ca4-8fc4-380b1803bf57 + - c3eeac1a-83df-4005-acc6-84eb940cbb53 + - _id: 5fa1e1180cf2468884110118 + purchaserUuid: 7c90efd8d3724dfe9c4b5d7ff23b8691 + amount: 2 + originalLength: 3600 + length: 3600 + gameType: 20 + dateActivated: 1604444496616 + boosterState: + decrementing: true + required: + - boosters + - boosterState + '400': + $ref: '#/components/responses/MissingFields' + '403': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/RateLimitError' + /findGuild: + get: + tags: + - guild + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/findGuild.md + summary: Returns the id of the requested guild. + description: | + #### Usage + ```typescript + let { guild } = await client.findGuild.byName("Mini Squid"); + console.log(guild); + // 553490650cf26f12ae5bac8f + { guild } = await client.findGuild.byUuid("20934ef9488c465180a78f861586b4cf"); + console.log(guild); + // 553490650cf26f12ae5bac8f + ``` + parameters: + - $ref: '#/components/parameters/byUuid' + - $ref: '#/components/parameters/byGuildName' + responses: + '200': + description: An object containing the guild ID if found, otherwise if not found the guild property will be null. + headers: + ratelimit-limit: + $ref: '#/components/headers/ratelimit-limit' + ratelimit-remaining: + $ref: '#/components/headers/ratelimit-remaining' + ratelimit-reset: + $ref: '#/components/headers/ratelimit-reset' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + guild: + type: string + nullable: true + example: 5985b1930cf28d110c2dac07 + required: + - guild + '400': + description: Missing one or more fields [byName,byUuid] + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + success: false + cause: 'Missing one or more fields [byName,byUuid]' + '403': + $ref: '#/components/responses/Unauthorized' + '422': + $ref: '#/components/responses/MalformedUUID' + '429': + $ref: '#/components/responses/RateLimitError' + /friends: + get: + tags: + - player + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/friends.md + summary: Returns friendships for given player. + description: | + #### Usage + ```typescript + const friends = await client.friends.uuid("20934ef9488c465180a78f861586b4cf"); + ``` + parameters: + - $ref: '#/components/parameters/PlayerUuidRequired' + responses: + '200': + description: An array containing a list of objects describing the player's friends. + headers: + ratelimit-limit: + $ref: '#/components/headers/ratelimit-limit' + ratelimit-remaining: + $ref: '#/components/headers/ratelimit-remaining' + ratelimit-reset: + $ref: '#/components/headers/ratelimit-reset' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + records: + type: array + items: + type: object + properties: + _id: + type: string + uuidSender: + type: string + uuidReceiver: + type: string + started: + type: number + required: + - _id + - uuidSender + - uuidReceiver + - started + example: + records: + - _id: 5eb97d170cf22f431e8d6170 + uuidSender: 20934ef9488c465180a78f861586b4cf + uuidReceiver: 7486aa03aca5470e888dde8a43eb8c10 + started: 1589214487454 + - _id: 5eb97d180cf22f431e8d6171 + uuidSender: 20934ef9488c465180a78f861586b4cf + uuidReceiver: 9926753a434e4b46a07625993a07b8ef + started: 1589214488015 + - _id: 5eb97d180cf22f431e8d6172 + uuidSender: 20934ef9488c465180a78f861586b4cf + uuidReceiver: b1f3957b2a1148298b55a9143548bbaa + started: 1589214488334 + - _id: 5eb97d180cf22f431e8d6173 + uuidSender: 20934ef9488c465180a78f861586b4cf + uuidReceiver: 4f9fceb6b17144058c6ef9ba4cfe3805 + started: 1589214488791 + required: + - records + '400': + $ref: '#/components/responses/MissingFields' + '403': + $ref: '#/components/responses/Unauthorized' + '422': + $ref: '#/components/responses/MalformedUUID' + '429': + $ref: '#/components/responses/RateLimitError' + /gameCounts: + get: + tags: + - metadata + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/gameCounts.md + summary: Returns the current player count along with the player count of each public game + mode on the server. + description: | + #### Usage + ```typescript + const gameCounts = await client.gameCounts(); + ``` + responses: + '200': + description: An object describing the current player count and game counts on the Hypixel network. + headers: + ratelimit-limit: + $ref: '#/components/headers/ratelimit-limit' + ratelimit-remaining: + $ref: '#/components/headers/ratelimit-remaining' + ratelimit-reset: + $ref: '#/components/headers/ratelimit-reset' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + playerCount: + type: integer + example: 77238 + description: Total players on the network + games: + type: object + properties: + MAIN_LOBBY: + type: object + properties: + players: + type: integer + required: + - players + TOURNAMENT_LOBBY: + type: object + properties: + players: + type: integer + required: + - players + UHC: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + TEAMS: + type: integer + SOLO: + type: integer + additionalProperties: + type: integer + required: + - TEAMS + - SOLO + required: + - players + - modes + SUPER_SMASH: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + 1v1_normal: + type: integer + friends_normal: + type: integer + solo_normal: + type: integer + 2v2_normal: + type: integer + teams_normal: + type: integer + additionalProperties: + type: integer + required: + - 1v1_normal + - friends_normal + - solo_normal + - 2v2_normal + - teams_normal + required: + - players + - modes + LEGACY: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + QUAKECRAFT: + type: integer + WALLS: + type: integer + VAMPIREZ: + type: integer + ARENA: + type: integer + PAINTBALL: + type: integer + GINGERBREAD: + type: integer + additionalProperties: + type: integer + required: + - QUAKECRAFT + - WALLS + - VAMPIREZ + - ARENA + - PAINTBALL + - GINGERBREAD + required: + - players + - modes + BUILD_BATTLE: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + BUILD_BATTLE_SOLO_NORMAL_LATEST: + type: integer + BUILD_BATTLE_GUESS_THE_BUILD: + type: integer + BUILD_BATTLE_TEAMS_NORMAL: + type: integer + BUILD_BATTLE_SOLO_NORMAL: + type: integer + BUILD_BATTLE_SOLO_PRO: + type: integer + additionalProperties: + type: integer + required: + - BUILD_BATTLE_SOLO_NORMAL_LATEST + - BUILD_BATTLE_GUESS_THE_BUILD + - BUILD_BATTLE_TEAMS_NORMAL + - BUILD_BATTLE_SOLO_NORMAL + - BUILD_BATTLE_SOLO_PRO + required: + - players + - modes + BATTLEGROUND: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + ctf_mini: + type: integer + domination: + type: integer + team_deathmatch: + type: integer + additionalProperties: + type: integer + required: + - ctf_mini + - domination + - team_deathmatch + required: + - players + - modes + WALLS3: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + standard: + type: integer + face_off: + type: integer + additionalProperties: + type: integer + required: + - standard + - face_off + required: + - players + - modes + HOUSING: + type: object + properties: + players: + type: integer + required: + - players + SPEED_UHC: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + team_normal: + type: integer + solo_normal: + type: integer + additionalProperties: + type: integer + required: + - team_normal + - solo_normal + required: + - players + - modes + DUELS: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + DUELS_BOWSPLEEF_DUEL: + type: integer + DUELS_BRIDGE_2V2V2V2: + type: integer + DUELS_BOW_DUEL: + type: integer + DUELS_UHC_FOUR: + type: integer + DUELS_MW_DUEL: + type: integer + DUELS_UHC_MEETUP: + type: integer + DUELS_BRIDGE_DOUBLES: + type: integer + DUELS_SW_DOUBLES: + type: integer + DUELS_UHC_DOUBLES: + type: integer + DUELS_BRIDGE_FOUR: + type: integer + DUELS_BRIDGE_3V3V3V3: + type: integer + DUELS_SUMO_DUEL: + type: integer + DUELS_UHC_DUEL: + type: integer + DUELS_OP_DOUBLES: + type: integer + DUELS_OP_DUEL: + type: integer + DUELS_MW_DOUBLES: + type: integer + DUELS_BLITZ_DUEL: + type: integer + DUELS_POTION_DUEL: + type: integer + DUELS_CLASSIC_DUEL: + type: integer + DUELS_COMBO_DUEL: + type: integer + DUELS_BRIDGE_DUEL: + type: integer + DUELS_SW_DUEL: + type: integer + additionalProperties: + type: integer + required: + - DUELS_BOWSPLEEF_DUEL + - DUELS_BRIDGE_2V2V2V2 + - DUELS_BOW_DUEL + - DUELS_UHC_FOUR + - DUELS_MW_DUEL + - DUELS_UHC_MEETUP + - DUELS_BRIDGE_DOUBLES + - DUELS_SW_DOUBLES + - DUELS_UHC_DOUBLES + - DUELS_BRIDGE_FOUR + - DUELS_BRIDGE_3V3V3V3 + - DUELS_SUMO_DUEL + - DUELS_UHC_DUEL + - DUELS_OP_DOUBLES + - DUELS_OP_DUEL + - DUELS_MW_DOUBLES + - DUELS_BLITZ_DUEL + - DUELS_POTION_DUEL + - DUELS_CLASSIC_DUEL + - DUELS_COMBO_DUEL + - DUELS_BRIDGE_DUEL + - DUELS_SW_DUEL + required: + - players + - modes + REPLAY: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + BASE: + type: integer + additionalProperties: + type: integer + required: + - BASE + required: + - players + - modes + SURVIVAL_GAMES: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + solo_normal: + type: integer + teams_normal: + type: integer + additionalProperties: + type: integer + required: + - solo_normal + - teams_normal + required: + - players + - modes + PROTOTYPE: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + TOWERWARS_SOLO: + type: integer + TOWERWARS_TEAM_OF_TWO: + type: integer + required: + - TOWERWARS_SOLO + - TOWERWARS_TEAM_OF_TWO + required: + - players + - modes + MURDER_MYSTERY: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + MURDER_DOUBLE_UP: + type: integer + MURDER_INFECTION: + type: integer + MURDER_ASSASSINS: + type: integer + MURDER_CLASSIC: + type: integer + additionalProperties: + type: integer + required: + - MURDER_DOUBLE_UP + - MURDER_INFECTION + - MURDER_ASSASSINS + - MURDER_CLASSIC + required: + - players + - modes + MCGO: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + normal: + type: integer + normal_party: + type: integer + deathmatch: + type: integer + additionalProperties: + type: integer + required: + - normal + - normal_party + - deathmatch + required: + - players + - modes + BEDWARS: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + BEDWARS_TWO_FOUR: + type: integer + BEDWARS_FOUR_THREE: + type: integer + BEDWARS_FOUR_FOUR_RUSH: + type: integer + BEDWARS_FOUR_FOUR_LUCKY: + type: integer + BEDWARS_EIGHT_ONE: + type: integer + BEDWARS_EIGHT_TWO_VOIDLESS: + type: integer + BEDWARS_EIGHT_TWO_RUSH: + type: integer + BEDWARS_FOUR_FOUR_ARMED: + type: integer + BEDWARS_EIGHT_TWO_ARMED: + type: integer + BEDWARS_FOUR_FOUR: + type: integer + BEDWARS_EIGHT_TWO: + type: integer + BEDWARS_EIGHT_TWO_LUCKY: + type: integer + additionalProperties: + type: integer + required: + - BEDWARS_TWO_FOUR + - BEDWARS_FOUR_THREE + - BEDWARS_FOUR_FOUR_RUSH + - BEDWARS_FOUR_FOUR_LUCKY + - BEDWARS_EIGHT_ONE + - BEDWARS_EIGHT_TWO_VOIDLESS + - BEDWARS_EIGHT_TWO_RUSH + - BEDWARS_FOUR_FOUR_ARMED + - BEDWARS_EIGHT_TWO_ARMED + - BEDWARS_FOUR_FOUR + - BEDWARS_EIGHT_TWO + - BEDWARS_EIGHT_TWO_LUCKY + required: + - players + - modes + SKYBLOCK: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + combat_1: + type: integer + dungeon_hub: + type: integer + foraging_1: + type: integer + hub: + type: integer + mining_2: + type: integer + dungeon: + type: integer + combat_2: + type: integer + farming_2: + type: integer + mining_1: + type: integer + farming_1: + type: integer + combat_3: + type: integer + dynamic: + type: integer + additionalProperties: + type: integer + required: + - combat_1 + - dungeon_hub + - foraging_1 + - hub + - mining_2 + - dungeon + - combat_2 + - farming_2 + - mining_1 + - farming_1 + - combat_3 + - dynamic + required: + - players + - modes + ARCADE: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + PARTY: + type: integer + HOLE_IN_THE_WALL: + type: integer + DEFENDER: + type: integer + MINI_WALLS: + type: integer + SIMON_SAYS: + type: integer + ZOMBIES_BAD_BLOOD: + type: integer + HIDE_AND_SEEK_PARTY_POOPER: + type: integer + DAYONE: + type: integer + DRAW_THEIR_THING: + type: integer + ZOMBIES_ALIEN_ARCADIUM: + type: integer + ONEINTHEQUIVER: + type: integer + SOCCER: + type: integer + PVP_CTW: + type: integer + THROW_OUT: + type: integer + ENDER: + type: integer + STARWARS: + type: integer + HALLOWEEN_SIMULATOR: + type: integer + DRAGONWARS2: + type: integer + ZOMBIES_DEAD_END: + type: integer + HIDE_AND_SEEK_PROP_HUNT: + type: integer + FARM_HUNT: + type: integer + additionalProperties: + type: integer + required: + - PARTY + - HOLE_IN_THE_WALL + - DEFENDER + - MINI_WALLS + - SIMON_SAYS + - ZOMBIES_BAD_BLOOD + - HIDE_AND_SEEK_PARTY_POOPER + - DAYONE + - DRAW_THEIR_THING + - ZOMBIES_ALIEN_ARCADIUM + - ONEINTHEQUIVER + - SOCCER + - PVP_CTW + - THROW_OUT + - ENDER + - STARWARS + - HALLOWEEN_SIMULATOR + - DRAGONWARS2 + - ZOMBIES_DEAD_END + - HIDE_AND_SEEK_PROP_HUNT + - FARM_HUNT + required: + - players + - modes + PIT: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + PIT: + type: integer + required: + - PIT + required: + - players + - modes + TNTGAMES: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + PVPRUN: + type: integer + TNTAG: + type: integer + TNTRUN: + type: integer + BOWSPLEEF: + type: integer + CAPTURE: + type: integer + additionalProperties: + type: integer + required: + - PVPRUN + - TNTAG + - TNTRUN + - BOWSPLEEF + - CAPTURE + required: + - players + - modes + SKYWARS: + type: object + properties: + players: + type: integer + modes: + type: object + properties: + solo_insane_lucky: + type: integer + solo_insane_slime: + type: integer + teams_insane_lucky: + type: integer + solo_normal: + type: integer + teams_insane: + type: integer + solo_insane_hunters_vs_beasts: + type: integer + ranked_normal: + type: integer + solo_insane_tnt_madness: + type: integer + mega_doubles: + type: integer + solo_insane: + type: integer + teams_insane_tnt_madness: + type: integer + teams_normal: + type: integer + mega_normal: + type: integer + additionalProperties: + type: integer + required: + - solo_insane_lucky + - solo_insane_slime + - teams_insane_lucky + - solo_normal + - teams_insane + - solo_insane_hunters_vs_beasts + - ranked_normal + - solo_insane_tnt_madness + - mega_doubles + - solo_insane + - teams_insane_tnt_madness + - teams_normal + - mega_normal + required: + - players + - modes + LIMBO: + type: object + properties: + players: + type: integer + required: + - players + IDLE: + type: object + properties: + players: + type: integer + required: + - players + QUEUE: + type: object + properties: + players: + type: integer + required: + - players + example: + MAIN_LOBBY: + players: 400 + TOURNAMENT_LOBBY: + players: 7 + UHC: + players: 796 + modes: + TEAMS: 399 + SOLO: 331 + SUPER_SMASH: + players: 91 + modes: + 1v1_normal: 7 + friends_normal: 4 + solo_normal: 11 + 2v2_normal: 32 + teams_normal: 8 + LEGACY: + players: 308 + modes: + QUAKECRAFT: 18 + WALLS: 83 + VAMPIREZ: 95 + ARENA: 8 + PAINTBALL: 37 + GINGERBREAD: 19 + BUILD_BATTLE: + players: 1329 + modes: + BUILD_BATTLE_HALLOWEEN: 32 + BUILD_BATTLE_SOLO_NORMAL_LATEST: 256 + BUILD_BATTLE_GUESS_THE_BUILD: 150 + BUILD_BATTLE_TEAMS_NORMAL: 478 + BUILD_BATTLE_SOLO_NORMAL: 171 + BUILD_BATTLE_SOLO_PRO: 81 + BATTLEGROUND: + players: 80 + modes: + ctf_mini: 60 + domination: 1 + team_deathmatch: 5 + WALLS3: + players: 290 + modes: + standard: 261 + face_off: 5 + HOUSING: + players: 3511 + SPEED_UHC: + players: 43 + modes: + team_normal: 18 + solo_normal: 25 + DUELS: + players: 5745 + modes: + DUELS_BOWSPLEEF_DUEL: 61 + DUELS_BRIDGE_2V2V2V2: 12 + DUELS_BOW_DUEL: 40 + DUELS_UHC_FOUR: 91 + DUELS_MW_DUEL: 44 + DUELS_UHC_MEETUP: 78 + DUELS_BRIDGE_DOUBLES: 287 + DUELS_SW_DOUBLES: 224 + DUELS_UHC_DOUBLES: 114 + DUELS_BRIDGE_FOUR: 94 + DUELS_BRIDGE_3V3V3V3: 39 + DUELS_SUMO_DUEL: 184 + DUELS_UHC_DUEL: 583 + DUELS_OP_DOUBLES: 48 + DUELS_OP_DUEL: 132 + DUELS_MW_DOUBLES: 4 + DUELS_BLITZ_DUEL: 118 + DUELS_POTION_DUEL: 26 + DUELS_CLASSIC_DUEL: 430 + DUELS_COMBO_DUEL: 48 + DUELS_BRIDGE_DUEL: 1443 + DUELS_SW_DUEL: 616 + REPLAY: + players: 18 + modes: + BASE: 18 + SURVIVAL_GAMES: + players: 390 + modes: + solo_normal: 171 + teams_normal: 154 + PROTOTYPE: + players: 527 + modes: + TOWERWARS_SOLO: 33 + TOWERWARS_TEAM_OF_TWO: 33 + MURDER_MYSTERY: + players: 1416 + modes: + MURDER_DOUBLE_UP: 360 + MURDER_INFECTION: 120 + MURDER_ASSASSINS: 129 + MURDER_CLASSIC: 627 + MCGO: + players: 147 + modes: + normal: 84 + normal_party: 8 + deathmatch: 35 + BEDWARS: + players: 23917 + modes: + BEDWARS_TWO_FOUR: 788 + BEDWARS_FOUR_THREE: 4052 + BEDWARS_FOUR_FOUR_RUSH: 3 + BEDWARS_FOUR_FOUR_LUCKY: 18 + BEDWARS_EIGHT_ONE: 2525 + BEDWARS_EIGHT_TWO_VOIDLESS: 7 + BEDWARS_EIGHT_TWO_RUSH: 10 + BEDWARS_FOUR_FOUR_ARMED: 858 + BEDWARS_EIGHT_TWO_ARMED: 642 + BEDWARS_FOUR_FOUR: 5090 + BEDWARS_EIGHT_TWO: 6784 + BEDWARS_EIGHT_TWO_LUCKY: 35 + SKYBLOCK: + players: 33850 + modes: + combat_1: 533 + dungeon_hub: 1022 + foraging_1: 794 + hub: 9291 + mining_2: 1111 + dungeon: 2823 + combat_2: 383 + farming_2: 186 + mining_1: 351 + farming_1: 169 + combat_3: 1641 + dynamic: 15547 + ARCADE: + players: 2665 + modes: + PARTY: 583 + HOLE_IN_THE_WALL: 20 + DEFENDER: 44 + MINI_WALLS: 121 + SIMON_SAYS: 78 + ZOMBIES_BAD_BLOOD: 23 + HIDE_AND_SEEK_PARTY_POOPER: 48 + DAYONE: 133 + DRAW_THEIR_THING: 54 + ZOMBIES_ALIEN_ARCADIUM: 117 + ONEINTHEQUIVER: 49 + SOCCER: 37 + PVP_CTW: 380 + THROW_OUT: 14 + ENDER: 25 + STARWARS: 51 + HALLOWEEN_SIMULATOR: 92 + DRAGONWARS2: 20 + ZOMBIES_DEAD_END: 244 + HIDE_AND_SEEK_PROP_HUNT: 86 + FARM_HUNT: 93 + PIT: + players: 974 + modes: + PIT: 974 + TNTGAMES: + players: 948 + modes: + PVPRUN: 26 + TNTAG: 467 + TNTRUN: 246 + BOWSPLEEF: 64 + CAPTURE: 39 + SKYWARS: + players: 6287 + modes: + solo_insane_lucky: 233 + solo_insane_slime: 10 + teams_insane_lucky: 160 + solo_normal: 1416 + teams_insane: 607 + solo_insane_hunters_vs_beasts: 2 + ranked_normal: 264 + solo_insane_tnt_madness: 87 + mega_doubles: 8 + solo_insane: 1810 + teams_insane_tnt_madness: 3 + teams_normal: 631 + mega_normal: 89 + LIMBO: + players: 153 + IDLE: + players: 8475 + QUEUE: + players: 0 + additionalProperties: + type: object + properties: + players: + type: integer + modes: + type: object + additionalProperties: + type: integer + required: + - players + required: + - MAIN_LOBBY + - TOURNAMENT_LOBBY + - UHC + - SUPER_SMASH + - LEGACY + - BUILD_BATTLE + - BATTLEGROUND + - WALLS3 + - HOUSING + - SPEED_UHC + - DUELS + - REPLAY + - SURVIVAL_GAMES + - PROTOTYPE + - MURDER_MYSTERY + - MCGO + - BEDWARS + - SKYBLOCK + - ARCADE + - PIT + - TNTGAMES + - SKYWARS + - LIMBO + - IDLE + - QUEUE + required: + - playerCount + - games + '400': + $ref: '#/components/responses/MissingFields' + '403': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/RateLimitError' + /guild: + get: + tags: + - guild + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/guild.md + summary: Returns information about given guild. + description: | + See [resources.md](https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/resources.md) for a JSON list of guild achievements and a JSON list of guild permissions. + #### Usage + ```typescript + const guild = await client.guild.player("20934ef9488c465180a78f861586b4cf"); + ``` + parameters: + - name: id + required: false + description: Hypixel guild ID. + in: query + schema: + type: string + example: 553490650cf26f12ae5bac8f + - name: player + required: false + description: Minecraft UUID of the player you want to find the guild of. + in: query + schema: + type: string + example: 20934ef9488c465180a78f861586b4cf + - name: name + required: false + description: Name of the Hypixel guild. + in: query + schema: + type: string + example: Mini Squid + responses: + '200': + description: An array containing a list of objects describing the player's friends. + headers: + ratelimit-limit: + $ref: '#/components/headers/ratelimit-limit' + ratelimit-remaining: + $ref: '#/components/headers/ratelimit-remaining' + ratelimit-reset: + $ref: '#/components/headers/ratelimit-reset' + content: + application/json: + schema: + $ref: '#/components/schemas/GuildResponse' + example: + guild: + _id: 553490650cf26f12ae5bac8f + name: Mini Squid + coins: 425310 + coinsEver: 1835310 + created: 1429508197967 + members: + - uuid: 20934ef9488c465180a78f861586b4cf + rank: GUILDMASTER + joined: 1429508197967 + questParticipation: 139 + expHistory: + '2020-11-06': 2226 + '2020-11-05': 0 + '2020-11-04': 4059 + '2020-11-03': 0 + '2020-11-02': 1102 + '2020-11-01': 0 + '2020-10-31': 0 + - uuid: 6a12d6f63e134c8bbebc70d90a797281 + rank: Famous + joined: 1518021755919 + questParticipation: 325 + expHistory: + '2020-11-06': 0 + '2020-11-05': 0 + '2020-11-04': 0 + '2020-11-03': 2399 + '2020-11-02': 758 + '2020-11-01': 4309 + '2020-10-31': 740 + - uuid: a99d9661fe2d4594a6b3d910c85cc4a4 + rank: MEMBER + joined: 1530770040736 + questParticipation: 800 + expHistory: + '2020-11-06': 0 + '2020-11-05': 0 + '2020-11-04': 0 + '2020-11-03': 0 + '2020-11-02': 0 + '2020-11-01': 0 + '2020-10-31': 0 + - uuid: 8a8bcd44c2034281a008ff7a1e0ead2f + rank: MEMBER + joined: 1532204533230 + questParticipation: 634 + expHistory: + '2020-11-06': 0 + '2020-11-05': 0 + '2020-11-04': 0 + '2020-11-03': 0 + '2020-11-02': 0 + '2020-11-01': 0 + '2020-10-31': 0 + tag: §a1§e2§c3§7 + banner: + Base: 15 + Patterns: + - Pattern: bo + Color: 9 + - Pattern: bri + Color: 5 + achievements: + WINNERS: 1080 + EXPERIENCE_KINGS: 316804 + ONLINE_PLAYERS: 125 + exp: 274641340 + legacyRanking: 2891 + ranks: + - name: Famous + default: false + tag: F + created: 1562382958149 + priority: 3 + - name: Member + default: true + tag: null + created: 1562383012859 + priority: 2 + - name: Big Nerd + default: false + tag: B + created: 1588882422793 + priority: 7 + - name: Notorious Nerd + default: false + tag: NERD + created: 1588882818050 + priority: 5 + name_lower: mini squid + chatMute: 0 + preferredGames: + - SKYWARS + publiclyListed: true + tagColor: GRAY + guildExpByGameType: + DUELS: 25270418 + BUILD_BATTLE: 10772932 + HOUSING: 22601152 + GINGERBREAD: 888064 + SURVIVAL_GAMES: 3504037 + WALLS: 1472671 + TNTGAMES: 7419981 + QUAKECRAFT: 857167 + MCGO: 1245579 + ARENA: 300356 + VAMPIREZ: 1497562 + BEDWARS: 127334623 + SKYWARS: 111325349 + MURDER_MYSTERY: 8704331 + SUPER_SMASH: 308906 + SPEED_UHC: 311651 + PIT: 0 + SKYBLOCK: 0 + BATTLEGROUND: 897997 + UHC: 12670118 + ARCADE: 10589782 + PROTOTYPE: 206060467 + LEGACY: 0 + REPLAY: 0 + WALLS3: 3467841 + PAINTBALL: 429708 + '400': + description: Missing one or more fields [id,name,player] + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + success: false + cause: 'Missing one or more fields [id,name,player]' + '403': + $ref: '#/components/responses/Unauthorized' + '422': + description: Malformed parameter (player UUID or guild ID) + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + examples: + uuid: + summary: The player UUID supplied is malformed. + value: + success: false + cause: Malformed UUID + guildId: + summary: The guild ID supplied is malformed. + value: + success: false + cause: Malformed guild ID + '429': + $ref: '#/components/responses/RateLimitError' + /key: + get: + tags: + - metadata + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/key.md + summary: Returns information regarding given key. + description: | + #### Usage + ```typescript + const key = await client.key(); + ``` + responses: + '200': + description: An object describing the API key's information. + headers: + ratelimit-limit: + $ref: '#/components/headers/ratelimit-limit' + ratelimit-remaining: + $ref: '#/components/headers/ratelimit-remaining' + ratelimit-reset: + $ref: '#/components/headers/ratelimit-reset' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + record: + type: object + properties: + key: + type: string + owner: + type: string + limit: + type: number + queriesInPastMin: + type: number + totalQueries: + type: number + required: + - key + - owner + - limit + - queriesInPastMin + - totalQueries + example: + record: + key: 00000000-0000-0000-0000-000000000000 + owner: 20934ef9-488c-4651-80a7-8f861586b4cf + limit: 120 + queriesInPastMin: 12 + totalQueries: 1234 + required: + - record + '400': + $ref: '#/components/responses/MissingFields' + '403': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/RateLimitError' + /leaderboards: + get: + tags: + - metadata + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/leaderboards.md + summary: Returns a list of the official leaderboards and their current standings for games on the network. + description: | + #### Usage + ```typescript + const leaderboards = await client.leaderboards(); + ``` + responses: + '200': + description: An object describing the current leaderboards on Hypixel's network. + headers: + ratelimit-limit: + $ref: '#/components/headers/ratelimit-limit' + ratelimit-remaining: + $ref: '#/components/headers/ratelimit-remaining' + ratelimit-reset: + $ref: '#/components/headers/ratelimit-reset' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - $ref: '#/components/schemas/LeaderboardsResponse' + example: + success: true + leaderboards: + ARENA: + - path: arena_rating_b + prefix: Overall + title: Rating + location: -2554,55,715 + count: 10 + leaders: + - 886ccd9d-d16d-4b8f-bf98-8b00831f9e30 + - 0c1f10f9-134e-4963-99b6-502270055a10 + - 1a02b5d6-1e95-468f-bed3-def763a75b0e + - 86072b6c-1f4e-4ed7-8b03-b828a47c33d9 + - path: wins_1v1 + prefix: Overall + title: 1v1 Wins + location: -2554,54,715 + count: 10 + leaders: + - 425fa076-cf95-4174-b3fc-c57943ebddba + - 42d17101-d916-4b8a-a70b-93dc6ccbee27 + - 576749eb-6728-4773-a41b-b418a62f9c01 + - e5dcd129-69dc-479a-8d32-4fc423d755b9 + MCGO: + - path: kills + prefix: Overall + title: Kills + location: -2550,55,715 + count: 10 + leaders: + - 7b1bb9c3-188d-4c7b-811b-90da2f670665 + - c8d0e91a-f6a1-42f4-94ee-c3fe21991435 + - da30c949-7de4-4131-ad3e-609f5f277eb9 + - 1266f943-0704-411b-b544-bde93fee8b14 + - path: normal_wins_2 + prefix: Monthly + title: Defusal Wins + location: 0,0,0 + count: 10 + leaders: + - ff6b7b72-26ff-4e68-bd10-5f0c0d3ad8c7 + - fa0e925a-9f63-42dd-8edc-8beae92fb065 + - f9f7cda1-07db-4c53-896d-1857603606b2 + - 1ea5c6ee-7ae5-4c94-83c0-5306c7b252aa + - path: normal_wins_1 + prefix: Weekly + title: Defusal Wins + location: 0,0,0 + count: 10 + leaders: + - ff6b7b72-26ff-4e68-bd10-5f0c0d3ad8c7 + - fa0e925a-9f63-42dd-8edc-8beae92fb065 + - f9f7cda1-07db-4c53-896d-1857603606b2 + - 1ea5c6ee-7ae5-4c94-83c0-5306c7b252aa + - path: deathmatch_wins_2 + prefix: Monthly + title: Deathmatch Wins + location: 0,0,0 + count: 10 + leaders: + - d784e3ef-9f7a-43af-8e47-f0fe1d02474c + - 9535b4f7-e59e-4ce0-b46d-7c41fe6d72fb + - 38d19a8a-e577-43f1-b505-840c30a1e10d + - 174856cd-5ffa-4688-9750-19a47594bbcf + BATTLEGROUND: + - path: wins + prefix: Overall + title: Wins + location: -2554,55,715 + count: 10 + leaders: + - 8bb6dd7f-b3de-43ec-af7e-1be7975e7bca + - 45fdbb18-52d6-4002-807d-240cdafcdab8 + - a61f48d2-c47f-4810-80ef-a3a6e8bf7cb6 + - 352ee5f2-caf3-4806-b396-a12f4a7ef8a1 + - path: wins_domination + prefix: Overall + title: DOM Wins + location: -2554,53,715 + count: 10 + leaders: + - f494f87c-a628-4506-bbe5-c15379cae4ec + - 45fdbb18-52d6-4002-807d-240cdafcdab8 + - c943524c-9e81-4137-b505-2adb7971c4f5 + - 5f168163-ced2-4645-b424-1e48de4627a1 + - path: wins_teamdeathmatch + prefix: Overall + title: TDM Wins + location: -2554,52,715 + count: 10 + leaders: + - 45fdbb18-52d6-4002-807d-240cdafcdab8 + - 3d2fb54b-4c70-409e-a2b9-50a5c42eccc7 + - 73fe74a1-8ae5-475f-a527-cbaf90e394c6 + - 8bb6dd7f-b3de-43ec-af7e-1be7975e7bca + - path: wins_capturetheflag + prefix: Overall + title: CTF Wins + location: -2554,51,715 + count: 10 + leaders: + - a61f48d2-c47f-4810-80ef-a3a6e8bf7cb6 + - 8bb6dd7f-b3de-43ec-af7e-1be7975e7bca + - 352ee5f2-caf3-4806-b396-a12f4a7ef8a1 + - 01c4a20e-0a60-466f-bd98-ea71c346e5e4 + SURVIVAL_GAMES: + - path: kills + prefix: Overall + title: Kills + location: -2554,55,715 + count: 10 + leaders: + - bba8054c-872a-4e24-a74d-858e9b9d0b13 + - 6c90504a-adb5-4099-9954-c23692703830 + - 7166de62-b38c-4733-ac33-ab7852b03ed6 + - fbdbf653-3723-4edd-85ae-2d28b60221f9 + - path: wins_solo_normal + prefix: Overall + title: Solo Wins + location: -2554,54,715 + count: 10 + leaders: + - bba8054c-872a-4e24-a74d-858e9b9d0b13 + - 2e7d0e70-4fe3-4d92-849a-24fcf7f9894e + - 6c90504a-adb5-4099-9954-c23692703830 + - 9daa06c7-ad91-45ff-8cc7-9de088b6d686 + - path: wins_teams + prefix: Overall + title: Teams Wins + location: -2554,53,715 + count: 10 + leaders: + - 556cd0de-cd29-4962-9f1c-8b80234e4212 + - 2a8e54f8-2e68-489a-9ece-6cadfd24b09c + - 7166de62-b38c-4733-ac33-ab7852b03ed6 + - 5b05d1e7-76f4-4eb0-a759-9e4d3131fe85 + UHC: + - path: kills + prefix: Overall + title: Kills + location: -2554,13,715 + count: 10 + leaders: + - c9a3e421-9dd5-4623-bad5-d2569f546eb8 + - 1c1419bf-3c22-412a-8e8a-63f3f5546ff4 + - 692a8229-646c-4a85-99bf-f48d99c1e1f8 + - 64e31ca7-17d3-4707-a077-873f5cde7632 + - path: monthly_kills_b + prefix: Monthly + title: Kills + location: -2554,12,715 + count: 10 + leaders: + - 7040c0c7-5de4-4778-b11d-21dfe72efa0b + - 46b3c68a-f795-41bd-9d6c-bfe8e4678521 + - a336071c-f30d-44a8-aa9c-0e3e681a6678 + - 09a2e8a4-42d5-4902-b3f4-a656709dc550 + - path: wins + prefix: Overall + title: Wins + location: -2554,11,715 + count: 10 + leaders: + - c9a3e421-9dd5-4623-bad5-d2569f546eb8 + - 0aa4deda-eadd-43db-ae0e-df6649f51e09 + - 94553984-0a4f-46e2-a138-1966e33d9f7f + - c6245d4f-40f8-48be-abe8-c94faf7e0d4c + - path: monthly_wins_b + prefix: Monthly + title: Wins + location: -2554,10,715 + count: 10 + leaders: + - 7040c0c7-5de4-4778-b11d-21dfe72efa0b + - a336071c-f30d-44a8-aa9c-0e3e681a6678 + - 46b3c68a-f795-41bd-9d6c-bfe8e4678521 + - 09a2e8a4-42d5-4902-b3f4-a656709dc550 + WALLS: + - path: kills + prefix: Overall + title: Kills + location: -2555,42,710 + count: 10 + leaders: + - 44ad1473-0a2a-4e91-9559-f6f614478156 + - b900be9d-adcf-4eb0-a953-9b5c490c23b3 + - d3a45b30-c6f5-4529-9fbe-23e33828354b + - a4bc06cb-fb73-4d5e-a2f3-13284c2fb660 + - path: monthly_kills_b + prefix: Monthly + title: Kills + location: -2555,41,710 + count: 10 + leaders: + - b900be9d-adcf-4eb0-a953-9b5c490c23b3 + - 44ad1473-0a2a-4e91-9559-f6f614478156 + - d3a45b30-c6f5-4529-9fbe-23e33828354b + - a4bc06cb-fb73-4d5e-a2f3-13284c2fb660 + - path: weekly_kills_a + prefix: Weekly + title: Kills + location: -2555,40,710 + count: 10 + leaders: + - b900be9d-adcf-4eb0-a953-9b5c490c23b3 + - 44ad1473-0a2a-4e91-9559-f6f614478156 + - d3a45b30-c6f5-4529-9fbe-23e33828354b + - a4bc06cb-fb73-4d5e-a2f3-13284c2fb660 + PROTOTYPE: + PAINTBALL: + - path: kills + prefix: Overall + title: Kills + location: -2554,55,715 + count: 10 + leaders: + - 31ff3435-3b4c-451a-a0a1-4d1185e17f68 + - 37637353-e6b9-4e3e-94ec-d9bb46e42af3 + - 7c59cb3c-dcd9-4346-b958-750d3818ddb9 + - f025c1c7-f55a-4ea0-b8d9-3f47d17dfe0f + - path: kills_b + prefix: Monthly + title: Kills + location: -2554,54,715 + count: 10 + leaders: + - a29972a6-8443-4eef-a176-3084d30142ca + - 879114af-ef96-48d4-81fb-dabea482d64e + - 6b3053e9-5f40-4ca4-982b-039c8a9729bb + - a759fac6-2da5-4473-9150-5b50892314d4 + - path: kills_a + prefix: Weekly + title: Kills + location: -2554,53,715 + count: 10 + leaders: + - a29972a6-8443-4eef-a176-3084d30142ca + - 879114af-ef96-48d4-81fb-dabea482d64e + - 6b3053e9-5f40-4ca4-982b-039c8a9729bb + - a759fac6-2da5-4473-9150-5b50892314d4 + SKYWARS: + - path: skywars_rating_b + prefix: Overall + title: Rating + location: -2556,56,712 + count: 14 + leaders: + - path: wins + prefix: Overall + title: Wins + location: -2556,55,712 + count: 14 + leaders: + - 2afdb69c-c007-40cd-98b9-76a7554612d9 + - 6951ccdb-9ca7-4c8a-883b-a8d3bb81c3d2 + - e61044cc-c42f-439b-9ad7-817c51ae7174 + - 12056d8b-e2b6-4621-802f-7a581f524b53 + - path: kills + prefix: Overall + title: Kills + location: -2556,54,712 + count: 14 + leaders: + - 2afdb69c-c007-40cd-98b9-76a7554612d9 + - e61044cc-c42f-439b-9ad7-817c51ae7174 + - 36cef0d3-f213-46dd-ba3d-9ab3e4ecd687 + - 12056d8b-e2b6-4621-802f-7a581f524b53 + - path: kills_monthly_2 + prefix: Monthly + title: Kills + location: -2556,53,712 + count: 14 + leaders: + - 20411abf-ecbc-40f1-8897-0be1ab4a0721 + - 12056d8b-e2b6-4621-802f-7a581f524b53 + - 5b9a07ae-f213-43cf-994d-939cc638fc5c + - d92bd382-7ff7-42c7-8588-ff722ff7d7a0 + MURDER_MYSTERY: + - path: wins + prefix: Overall + title: Wins + location: 0,0,0 + count: 14 + leaders: + - b3b18e30-da91-45b8-bd10-a767ba5f12e9 + - fb71c0fc-6dba-4a18-a397-f2cce59f28d7 + - 4aa79729-0fc2-4cc9-b81e-28cb3a1dc30c + - 93862e00-6994-4fa3-885b-17db8f73cc06 + - path: wins_1 + prefix: Weekly + title: Wins + location: 0,0,0 + count: 14 + leaders: + - f36bdc4f-7dab-462b-87b6-dee2e3af8490 + - 4aa518cc-6036-4d11-88b2-60aff0bbddf6 + - fb71c0fc-6dba-4a18-a397-f2cce59f28d7 + - 7092686b-d914-43cc-a9bb-77bef9dca36d + - path: kills + prefix: Overall + title: Kills + location: 0,0,0 + count: 14 + leaders: + - b3b18e30-da91-45b8-bd10-a767ba5f12e9 + - f7b61e37-0970-4dab-b57b-24c779894ca9 + - ea0aae8a-4209-4992-898c-b6fc319c0bfd + - e295e12d-e912-4be2-baa7-ab49efd20a63 + - path: kills_1 + prefix: Weekly + title: Kills + location: 0,0,0 + count: 14 + leaders: + - e957f9c3-19cd-4ef2-9dfd-13862b375b9e + - f36bdc4f-7dab-462b-87b6-dee2e3af8490 + - 329eea92-f5f7-4580-a4b6-8ef98870c525 + - 4aa518cc-6036-4d11-88b2-60aff0bbddf6 + SUPER_SMASH: + - path: smash_level_total + prefix: Overall + title: Smash Level + location: 814,39,32 + count: 14 + leaders: + - ed1296e1-54f7-49bd-beea-af405b891f31 + - bef402f4-1b0e-41d1-beb3-0f39aaa80661 + - bec9029b-efb3-4c85-925d-f2e97640cf92 + - be52d218-ec9a-4d99-bce8-a2ed52cdf8c9 + - path: kills + prefix: Overall + title: Kills + location: 814,38,32 + count: 14 + leaders: + - 2de27887-dbb9-4154-8a36-029d6de5f468 + - 48633e98-c618-42b1-a85f-78775ce3f4a8 + - 22060ff2-8f07-476d-ba5d-37efd4b6b9d3 + - 176ebb3a-0288-4f91-9b2b-842fee80e33c + - path: kills_b + prefix: Monthly + title: Kills + location: 814,37,32 + count: 14 + leaders: + - 2e1884f6-9c29-4bd5-89e6-d7709b100298 + - aa365d91-a5ac-4f85-a7fa-b8f4919d5c93 + - ef23eebb-88ba-4f0f-978f-3161cfde2ba8 + - d0cdf17b-f8bd-4195-a8ab-c366bd5eb7c3 + - path: kills_a + prefix: Weekly + title: Kills + location: 814,36,32 + count: 14 + leaders: + - 2e1884f6-9c29-4bd5-89e6-d7709b100298 + - aa365d91-a5ac-4f85-a7fa-b8f4919d5c93 + - ef23eebb-88ba-4f0f-978f-3161cfde2ba8 + - d0cdf17b-f8bd-4195-a8ab-c366bd5eb7c3 + DUELS: + - path: wins_weekly_a + prefix: Weekly + title: Wins + location: 0,0,0 + count: 10 + leaders: + - 54d7467e-5acd-48c4-9bf8-2c6f8a492f2f + - fcec891c-13c9-4c96-94cf-91d757a50234 + - 5a690439-5dd6-4d52-8fe9-8f201c73214e + - 400f42b6-b7fd-410c-b719-d24b427fbad1 + - path: wins_monthly_b + prefix: Monthly + title: Wins + location: 0,0,0 + count: 10 + leaders: + - 54d7467e-5acd-48c4-9bf8-2c6f8a492f2f + - fcec891c-13c9-4c96-94cf-91d757a50234 + - 5a690439-5dd6-4d52-8fe9-8f201c73214e + - 400f42b6-b7fd-410c-b719-d24b427fbad1 + SPEED_UHC: + - path: salt + prefix: Total + title: Salt + location: -2551,58,712 + count: 16 + leaders: + - 3dd44efa-1b57-4c68-ad65-b9601ce791ff + - 5409757b-8734-4c03-94b1-0bf966a2d594 + - 06a87689-a1c9-476c-82d7-127f25769e33 + - 6d04f5ca-de1f-449c-9d24-c7abd986cc64 + - path: kills_normal + prefix: Normal + title: Kills + location: -2551,57,712 + count: 16 + leaders: + - 3dd44efa-1b57-4c68-ad65-b9601ce791ff + - b3161a77-90ad-43e6-97fd-a9e298ffb699 + - 2c8e1e5d-1fbd-466f-b677-0fdd65359cd5 + - 86de061e-00d2-4588-8c98-016283a78e31 + - path: wins_normal + prefix: Normal + title: Wins + location: -2551,56,712 + count: 16 + leaders: + - 3dd44efa-1b57-4c68-ad65-b9601ce791ff + - b3161a77-90ad-43e6-97fd-a9e298ffb699 + - 2c8e1e5d-1fbd-466f-b677-0fdd65359cd5 + - 86de061e-00d2-4588-8c98-016283a78e31 + - path: kills_insane + prefix: Insane + title: Kills + location: -2551,55,712 + count: 16 + leaders: + - 3dd44efa-1b57-4c68-ad65-b9601ce791ff + - f5a1122d-9ee6-4b0a-9ddb-e6c66476f103 + - 6d04f5ca-de1f-449c-9d24-c7abd986cc64 + - 83f44cd9-ca9d-4712-a6bf-9e618574f0de + TNTGAMES: + - path: wins_tntrun + prefix: Overall + title: TNT Run Wins + location: -2554,57,715 + count: 10 + leaders: + - aed8deec-8c35-4187-8a79-ba72ab29076d + - b379f448-0f28-4eb8-af7b-a8d1ead7b80f + - 141e5144-6940-46ea-a7e5-36ed70cc1595 + - f9fe4ed4-1242-460d-b7db-d7bfd054e082 + - path: wins_pvprun + prefix: Overall + title: PVP Run Wins + location: -2554,56,715 + count: 10 + leaders: + - 9e7d2bdb-3dc6-448f-9bb2-67cb76c422ac + - 2acdd559-e426-4028-94fe-7077d64da2a9 + - 0eb1125c-9f75-4fba-87c2-116f67b7a209 + - 2ccb704c-71b9-42a6-b7a2-695e6d53711e + - path: wins_capture + prefix: Overall + title: Wizards Wins + location: -2554,55,715 + count: 10 + leaders: + - 3c57402d-3fd9-4ba9-abc0-e239ac13e2ba + - 76dda034-88fb-4e59-8e40-126b1a7a140d + - 0b1c1870-5cf5-493c-8f91-0f4581054f26 + - 54199f5f-a4cc-4d6d-bbfd-79d448e6102a + - path: wins_tntag + prefix: Overall + title: TNT Tag Wins + location: -2554,54,715 + count: 10 + leaders: + - 16495069-13bc-4c16-869b-c49965786629 + - 386c874e-7b1f-4951-8e8c-293fb2cce01b + - 6a9ef19c-d011-4811-9ea7-9a540044d589 + - 4497e0d3-3500-4183-9052-3d52d1d42e51 + BEDWARS: + - path: bedwars_level + prefix: Current + title: Level + location: 0,0,0 + count: 14 + leaders: + - fe15273a-c660-4a6f-95da-ee3f9458eeba + - 383a081f-6dc0-4ac0-bb95-1f8d50c3e532 + - 317517f7-470d-456a-a6ee-ea037425db33 + - 4430ab4e-56ef-4eca-987e-cdff56697930 + - path: wins + prefix: Overall + title: Wins + location: 0,0,0 + count: 14 + leaders: + - fe15273a-c660-4a6f-95da-ee3f9458eeba + - 50c68641-558d-48b0-b36f-f89e94069acf + - 383a081f-6dc0-4ac0-bb95-1f8d50c3e532 + - 9491cd6c-18a6-47e3-aea9-0178447844b0 + - path: wins_1 + prefix: Weekly + title: Wins + location: 0,0,0 + count: 14 + leaders: + - f54f3af5-572f-41e6-914d-dd941971d129 + - e6e4990d-fcba-4cb6-8ce2-7a50348560f5 + - 4975c48c-4e9d-48dd-9580-45549636a10a + - e8e3c4f6-9a92-4024-ac84-4306baf9a5ab + - path: final_kills + prefix: Overall + title: Final Kills + location: 0,0,0 + count: 14 + leaders: + - fe15273a-c660-4a6f-95da-ee3f9458eeba + - 317517f7-470d-456a-a6ee-ea037425db33 + - 24c182c6-716b-47c6-8f60-a1be9045c449 + - 3a5321ea-3360-4353-9f84-fa018c5de50b + GINGERBREAD: + - path: gold_trophy + prefix: Overall + title: Gold Trophies + location: -114,34,-8 + count: 10 + leaders: + - cdea3387-7a37-413d-a44e-365acc9f7a50 + - 617c7e30-149b-408f-b1d4-5d0ada9b8d1a + - dd67feb4-219a-47b2-8ff5-89fed5a26b68 + - 944e11e3-ab42-4b73-b60c-3ff456aa3c5f + - path: gold_2 + prefix: Monthly + title: Gold Trophies + location: -114,33,-8 + count: 10 + leaders: + - a15d2ae2-a16a-4415-b9c4-8bf8470f9d49 + - cdea3387-7a37-413d-a44e-365acc9f7a50 + - cc3e837e-3885-4361-a99a-85b32942ae00 + - 6b93a19c-9bf2-4fa7-832b-7e26783366af + - path: gold_1 + prefix: Weekly + title: Gold Trophies + location: -114,32,-8 + count: 10 + leaders: + - a15d2ae2-a16a-4415-b9c4-8bf8470f9d49 + - cdea3387-7a37-413d-a44e-365acc9f7a50 + - cc3e837e-3885-4361-a99a-85b32942ae00 + - 6b93a19c-9bf2-4fa7-832b-7e26783366af + - path: laps_completed + prefix: Overall + title: Laps Completed + location: -114,31,-8 + count: 10 + leaders: + - cdea3387-7a37-413d-a44e-365acc9f7a50 + - 617c7e30-149b-408f-b1d4-5d0ada9b8d1a + - dd67feb4-219a-47b2-8ff5-89fed5a26b68 + - 3863e1c3-3eb3-4215-9e45-a17f16c0fb4c + BUILD_BATTLE: + - path: score + prefix: Lifetime + title: Score + location: 0,0,0 + count: 14 + leaders: + - 71842575-8b61-4639-b28f-b12157dabcf5 + - f9beae65-c0fc-46ee-8691-99589d1e28a3 + - ce38dc5e-8b53-4b77-88de-cd989bea71f6 + - 6dbbd744-f8bb-4a59-b783-7d8c29ac48e6 + - path: coins + prefix: Lifetime + title: Coins + location: 0,0,0 + count: 14 + leaders: + - f9beae65-c0fc-46ee-8691-99589d1e28a3 + - 3efd540b-06ae-4141-8616-72f6510c99e8 + - 7ab7ff47-2e13-4b69-82b7-fcaffe994360 + - bfcc0ed5-4776-4a93-8ac3-922c8aebc3d2 + - path: wins + prefix: Lifetime + title: Wins + location: 0,0,0 + count: 14 + leaders: + - 71842575-8b61-4639-b28f-b12157dabcf5 + - 6dbbd744-f8bb-4a59-b783-7d8c29ac48e6 + - d5f8632f-360e-4965-a5e0-c5b6c122c92f + - bbc615f9-3d2b-4e3f-9d41-4a60804b196b + ARCADE: + - path: coins + prefix: Current + title: Coins + location: -2554,55,715 + count: 10 + leaders: + - 125b094d-ab5b-4f72-8d06-587d09789602 + - 683599f6-258a-4e14-825c-c20690b2fbe2 + - 6211503e-3c8a-461f-ba0c-d17cd7975d1a + - 0aa12772-03fc-4c67-854f-eda7249b2c07 + - path: weekly_coins_a + prefix: Weekly + title: Coins + location: -2554,53,715 + count: 10 + leaders: + - 683599f6-258a-4e14-825c-c20690b2fbe2 + - 12eaa872-8ab2-40fa-a336-02c516d09185 + - 4bf1106a-ec39-4859-8167-be84924abc1d + - 1c319423-2a30-4d8f-9cec-5b73324d523e + - path: monthly_coins_b + prefix: Monthly + title: Coins + location: -2554,54,715 + count: 10 + leaders: + - 683599f6-258a-4e14-825c-c20690b2fbe2 + - 12eaa872-8ab2-40fa-a336-02c516d09185 + - 66923dc4-3af6-44bb-a499-071739732284 + - 4bf1106a-ec39-4859-8167-be84924abc1d + SKYCLASH: + - path: kills + prefix: Total + title: Kills + location: -5,66,-32 + count: 14 + leaders: + - f14aa8f3-6cb2-4207-a9c6-80a22549f9e6 + - acab01d7-504b-4fa1-ad2f-b96f96afccbc + - 031a3461-a56d-4459-98b6-5bed0c4cafdc + - e2bf0a2f-2cf2-4fc2-9512-511ddc10201a + - path: wins_solo + prefix: Solo + title: Wins + location: -5,65,-32 + count: 14 + leaders: + - f14aa8f3-6cb2-4207-a9c6-80a22549f9e6 + - 3c6a5574-1f89-42fa-ba37-0e6408ed86f7 + - b8483b6e-868e-4744-8835-def95862b271 + - 2d226fed-cc9f-41b0-8a3c-06099255a80c + - path: wins_doubles + prefix: Doubles + title: Wins + location: -5,64,-32 + count: 14 + leaders: + - 82131e5b-7af8-4736-8b12-1786897f2af5 + - 90747aac-cb28-48a7-b302-27657b79480c + - 840c16fb-bc94-4c5d-ba35-eec24815ff73 + - e61a923b-add0-456f-8750-f665172b0b13 + - path: wins_team_war + prefix: TeamWar + title: Wins + location: -5,63,-32 + count: 14 + leaders: + - acab01d7-504b-4fa1-ad2f-b96f96afccbc + - 98f8f9c9-165d-4d4b-b672-59040a9407a7 + - e2bf0a2f-2cf2-4fc2-9512-511ddc10201a + - 3a134c7e-b61e-490b-83d9-86f16969bf7f + QUAKECRAFT: + - path: kills + prefix: Overall + title: Kills + location: -2554,55,715 + count: 10 + leaders: + - 511a4cd1-138b-45b9-8d39-3680454bd6e3 + - d9d3cd91-d888-4d04-9193-6185d317c4c0 + - 7965bf44-c87f-4a86-ba9c-9c4cb395c99c + - bd3492d0-1194-4159-a827-f73c2897640d + - path: kills_b + prefix: Monthly + title: Kills + location: -2554,54,715 + count: 10 + leaders: + - path: kills_a + prefix: Weekly + title: Kills + location: -2554,53,715 + count: 10 + leaders: + TRUE_COMBAT: + - path: wins + prefix: Overall + title: Wins + location: 33,33,10 + count: 10 + leaders: + - 8682b351-e9c2-4163-9291-935776608054 + - fb3d9649-8a5b-4d5b-91b7-63db14b195ad + - 27a86e79-99a6-4f32-a8ae-44b2ea310fe1 + - 7fa3c2e8-9e3d-4348-aaf1-703bc9da970b + - path: kills + prefix: Overall + title: Kills + location: 33,32,10 + count: 10 + leaders: + - fb3d9649-8a5b-4d5b-91b7-63db14b195ad + - 27a86e79-99a6-4f32-a8ae-44b2ea310fe1 + - 8682b351-e9c2-4163-9291-935776608054 + - 7fa3c2e8-9e3d-4348-aaf1-703bc9da970b + - path: kills_monthly_b + prefix: Monthly + title: Kills + location: 33,31,10 + count: 10 + leaders: + - path: kills_weekly_a + prefix: Weekly + title: Kills + location: 33,30,10 + count: 10 + leaders: + WALLS3: + - path: finalKills + prefix: Overall + title: Final Kills + location: -2554,54,712 + count: 10 + leaders: + - f01736f9-4059-4585-895c-342c5f087464 + - 22bd72ab-e315-4766-8cbd-198f2bca58b4 + - 599ec515-b661-4f70-a509-e50fb07fdc4a + - 024c5b04-f2ea-4a09-ab1c-1a1995a359f0 + - path: monthly_finalKills_b + prefix: Monthly + title: Final Kills + location: -2554,53,712 + count: 10 + leaders: + - ed2bf33a-c3a1-46de-a3dc-8a57eaade4c9 + - ac977caa-76cf-40d0-b988-047db1277da7 + - bd37a95f-f22c-43e1-b593-5b48519970d2 + - f3923c45-8bd7-4f5d-a5b1-616d0b515584 + - path: weekly_finalKills_a + prefix: Weekly + title: Final Kills + location: -2554,52,712 + count: 10 + leaders: + - ed2bf33a-c3a1-46de-a3dc-8a57eaade4c9 + - ac977caa-76cf-40d0-b988-047db1277da7 + - bd37a95f-f22c-43e1-b593-5b48519970d2 + - f3923c45-8bd7-4f5d-a5b1-616d0b515584 + VAMPIREZ: + - path: human_wins + prefix: Overall + title: Human Wins + location: -2554,55,715 + count: 10 + leaders: + - dfaa25e4-1c05-4575-bf7f-fccf248f5c6a + - cb81ee59-9012-40fc-9aa0-617907138ea7 + - 78bb7dfc-2754-4337-a4f3-751b9cf15bdb + - dfecbaf1-3712-4543-ba13-a99f23f70382 + - path: human_wins_b + prefix: Monthly + title: Human Wins + location: -2554,54,715 + count: 10 + leaders: + - 27be3470-303a-4f1b-8e36-6ac44d5f56cf + - bfc1fbb4-fdde-41c8-b07e-54d92c31497d + - 54df6bf6-8d70-42bc-a1cb-12596ed9b57f + - dbd6b99f-e00c-47d0-bc74-53bdacec035b + - path: human_wins_a + prefix: Weekly + title: Human Wins + location: -2554,53,715 + count: 10 + leaders: + - 27be3470-303a-4f1b-8e36-6ac44d5f56cf + - bfc1fbb4-fdde-41c8-b07e-54d92c31497d + - 54df6bf6-8d70-42bc-a1cb-12596ed9b57f + - dbd6b99f-e00c-47d0-bc74-53bdacec035b + '400': + $ref: '#/components/responses/MissingFields' + '403': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/RateLimitError' + /player: + get: + tags: + - player + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/player.md + summary: Returns a player's data, such as game stats. + description: | + #### Usage + ```typescript + const player = await client.player.uuid("20934ef9488c465180a78f861586b4cf"); + ``` + parameters: + - $ref: '#/components/parameters/PlayerUuidRequired' + responses: + '200': + description: An object describing the requested player. + headers: + ratelimit-limit: + $ref: '#/components/headers/ratelimit-limit' + ratelimit-remaining: + $ref: '#/components/headers/ratelimit-remaining' + ratelimit-reset: + $ref: '#/components/headers/ratelimit-reset' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - $ref: '#/components/schemas/PlayerResponse' + example: + player: + _id: 5cd536a538200698db7973c8 + uuid: 20934ef9488c465180a78f861586b4cf + firstLogin: 1557477031215 + playername: minikloon + displayname: Minikloon + knownAliases: + - Minikloon + knownAliasesLower: + - minikloon + achievementsOneTime: + - general_first_join + - general_youtuber + - general_first_friend + - general_friends_25 + rank: ADMIN + parkourCheckpointBests: + mainLobby2017: + 0: 20903 + 1: 14855 + 2: 6908 + Bedwars: + 0: 9880 + 1: 7302 + 2: 9552 + 3: 17291 + Prototype: + 0: 7151 + 1: 10851 + 2: 9950 + 3: 12950 + 4: 6550 + SkywarsAug2017: + 0: 9701 + 1: 7901 + 2: 9470 + 3: 7551 + Tourney: + 0: 24764 + 1: 24109 + 2: 19961 + 3: 23764 + CopsnCrims: + 0: 20502 + 1: 22053 + Housing: + 0: 7117 + 1: 9954 + 2: 8730 + 3: 8893 + 4: 10307 + 5: 32182 + 6: 32927 + achievementTracking: + achievementPoints: 1915 + achievements: + skywars_cages: 0 + bedwars_level: 200 + bedwars_loot_box: 212 + gingerbread_banker: 150 + arena_climb_the_ranks: 2000 + skywars_wins_mega: 0 + skywars_kills_mega: 0 + general_wins: 14 + general_challenger: 10 + copsandcrims_cac_banker: 9157 + general_coins: 10184 + copsandcrims_headshot_kills: 0 + copsandcrims_serial_killer: 0 + copsandcrims_hero_terrorist: 0 + skywars_wins_lab: 0 + skyblock_harvester: 50 + skyblock_treasury: 60 + skyblock_minion_lover: 149 + skyblock_excavator: 50 + skyblock_combat: 50 + skyblock_gatherer: 50 + skyblock_augmentation: 50 + skyblock_angler: 50 + skywars_kills_solo: 0 + duels_duels_traveller: 5 + duels_duels_win_streak: 3 + duels_duels_winner: 3 + skyblock_concoctor: 50 + walls3_jack_of_all_trades: 3 + blitz_kit_collector: 25 + copsandcrims_bomb_specialist: 0 + skyblock_unique_gifts: 100 + quake_coins: 380 + quake_kills: 21 + quake_headshots: 7 + quake_killing_sprees: 2 + pit_prestiges: 40 + pit_mysticism: 60 + pit_events: 9 + pit_gold: 2012205527 + pit_kills: 124 + pit_contracts: 1 + pit_renown: 1805 + blitz_looter: 2 + blitz_coins: 60 + blitz_kit_experience_collector: 6 + tntgames_tnt_banker: 254 + tntgames_block_runner: 131 + tntgames_tnt_triathlon: 2 + skyblock_domesticator: 50 + skyblock_slayer: 3000 + summer_treasure_hoarder: 16 + arcade_arcade_banker: 333 + summer_gone_fishing: 1 + skywars_you_re_a_star: 50 + skyblock_treasure_hunter: 1 + skyblock_dungeoneer: 8 + karma: 6724125 + networkExp: 1505039 + giftingMeta: + realBundlesReceived: 96 + bundlesReceived: 96 + friendRequestsUuid: + cooldowns: + fun: + event_quickmaths: 1598978365365 + parkourCompletions: + Bedwars: + - timeStart: 1557853162233 + timeTook: 44347 + mainLobby2017: + - timeStart: 1558118358435 + timeTook: 47417 + - timeStart: 1558118585692 + timeTook: 48207 + - timeStart: 1567027424193 + timeTook: 47354 + - timeStart: 1569402929686 + timeTook: 54705 + Prototype: + - timeStart: 1565924896955 + timeTook: 48198 + SkywarsAug2017: + - timeStart: 1566169851007 + timeTook: 39949 + - timeStart: 1578123599427 + timeTook: 36048 + Tourney: + - timeStart: 1572120789176 + timeTook: 184205 + - timeStart: 1572121242421 + timeTook: 104517 + - timeStart: 1572121681665 + timeTook: 101141 + newPackageRank: MVP_PLUS + userLanguage: ENGLISH + mcVersionRp: 1.8.9 + achievementSync: + quake_tiered: 1 + onetime_achievement_menu_sort: a_to_z + housingMeta: + firstHouseJoinMs: 1559776192229 + tutorialStep: FINISH_FINISHED + playerSettings: + VISIBILITY: IntegerState-2 + given_cookies_105038: + - 8356e112-4308-40c2-aae5-928dd42cf7d3 + given_cookies_105042: + - eef21b3d-efd2-4a07-abea-2f046f6c47c0 + given_cookies_105044: + - a5109530-57ab-4dbf-8d7d-9fa3f1a25a03 + plotSize: LARGE + packages: + - migrated_to_mongo + - housing_item_flag_1 + - synced_cookies_v1 + - housing_item_flag_3 + allowedBlocks: + - 3:0 + - 1:0 + - 5:0 + - 50:0 + selectedChannels_v3: + - + - + - + - + given_cookies_105056: + - caaee0b4-a192-4056-8e81-6c0442836f23 + given_cookies_105060: + - b137e937-a7a6-4b68-9d02-534f88f9e3c9 + given_cookies_105065: + - e631bd14-00ff-4fc2-846d-661b1d35795b + given_cookies_105068: + - dbac3fe2-2024-4e21-a06a-3ab54e900a71 + - a94ba73b-567a-4667-bb0b-9cf3cc44bd27 + - e34848cc-13ef-4ca9-88f4-2273117b77aa + settings: + partyInvitePrivacy: MAX + disableDebug: true + stopAbusingMe: true + challenges: + all_time: + WALLS3__berserk_challenge: 1 + MCGO__killing_spree_challenge: 3 + MCGO__knife_challenge: 1 + QUAKECRAFT__killing_streak_challenge: 1 + SURVIVAL_GAMES__star_challenge: 4 + socialMedia: + links: + DISCORD: Minikloon#0001 + prompt: true + claimed_solo_bank_1c0e4f84-81d1-4c9b-adcc-78f6bfb2d063: 1564025270111 + vanityMeta: + packages: + - cloak_lovely + - suit_phoenix_helmet + - hat_letter_m + - pet_sheep_purple + channel: ALL + claimed_coop_bank_05c9bb60-e39e-4463-82c6-d5a7fe2fa0f0: 1568133813238 + petStats: + LITTLE_YOU: + name: §eMini§bMe + petConsumables: + BREAD: 1 + CARROT_ITEM: 4 + FEATHER: 4 + LAVA_BUCKET: 10 + MAGMA_CREAM: 4 + MELON: 1 + MILK_BUCKET: 5 + PORK: 1 + SLIME_BALL: 4 + STICK: 4 + WATER_BUCKET: 5 + WHEAT: 2 + WOOD_SWORD: 5 + BAKED_POTATO: 1 + COOKIE: 2 + GOLD_RECORD: 1 + HAY_BLOCK: 1 + LEASH: 2 + RAW_FISH: 1 + ROTTEN_FLESH: 1 + currentClickEffect: HEARTS + tourney: + first_join_lobby: 1571793992127 + mcgo_defusal_0: + seenRPbook: true + playtime: 68 + first_win: 1572042364354 + tributes_earned: 40 + total_tributes: 52 + quake_solo2_0: + games_played: 1 + playtime: 2 + tributes_earned: 12 + first_game: 1580521766428 + shop_sort: highest_cost + claimed_solo_bank_bf7c14fb-0189-4689-9d94-4d56e65222d2: 1572446005883 + onetime_achievement_menu_sort_completion_sort: no_sort + snowball_fight_intro_2019: true + lastAdsenseGenerateTime: 1585898148468 + anniversaryNPCVisited2020: + - 29 + - 2 + - 11 + anniversaryNPCProgress2020: 1 + voting: + last_mcmp: 1586883730869 + last_vote: 1586930879608 + secondary_mcmp: 1 + total: 3 + total_mcmp: 1 + votesToday: 1 + last_mcsl: 1586930879608 + secondary_mcsl: 2 + total_mcsl: 2 + currentGadget: SYNTHESIZER + s: + SkyWars: + levelFormatted: §72⋆ + souls: 14 + packages: + - update_solo_team_kits2 + - update_solo_team_kits_and_perks + - update_solo_team_perk_levels + - convertedstatstoexp + hide_skywars_level: true + coins: 20311 + games_played_skywars: 61 + skywars_experience: 34 + most_kills_game: 1 + most_kills_game_kit_mega_mega_default: 2 + fastest_win: 393 + fastest_win_mega_doubles: 393 + fastest_win_kit_mega_mega_default: 393 + lastMode: SOLO + most_kills_game_mega_doubles: 2 + lab_win_lucky_blocks: 1 + coins_gained: 2637 + kills_weekly_b: 4 + killstreak: 2 + kills: 4 + time_played_mega_doubles: 393 + wins_kit_mega_mega_default: 1 + void_kills: 2 + kills_kit_mega_mega_default: 2 + killstreak_kit_mega_mega_default: 2 + winstreak_kit_mega_mega_default: 1 + survived_players: 50 + wins: 1 + games_mega_doubles: 1 + kills_mega_doubles_normal: 2 + wins_mega_doubles_normal: 1 + winstreak_mega_doubles: 1 + survived_players_mega_doubles: 37 + winstreak: 1 + lab_win_lucky_blocks_kit_mega_mega_default: 1 + kills_mega_doubles: 2 + time_played_kit_mega_mega_default: 393 + lab_win_lucky_blocks_mega_doubles: 1 + games_kit_mega_mega_default: 1 + void_kills_mega_doubles: 1 + souls_gathered: 4 + survived_players_kit_mega_mega_default: 37 + time_played: 567 + games: 1 + killstreak_mega_doubles: 2 + void_kills_kit_mega_mega_default: 1 + wins_mega_doubles: 1 + kills_monthly_a: 2 + skywars_chests: 13 + rush_explained_last: 1566927797658 + rush_explained: 1 + fastest_win_lab_kit_mining_team_default: 146 + fastest_win_lab_solo: 146 + fastest_win_lab: 146 + survived_players_lab_solo: 1 + time_played_lab_kit_mining_team_default: 146 + winstreak_lab_solo: 1 + wins_lab: 1 + time_played_lab_solo: 146 + time_played_lab: 146 + lab_win_rush_lab_solo: 1 + games_lab: 1 + survived_players_lab: 1 + coins_gained_lab: 144 + survived_players_lab_kit_mining_team_default: 1 + winstreak_lab: 1 + games_lab_kit_mining_team_default: 1 + games_lab_solo: 1 + wins_lab_solo: 1 + lab_win_rush_lab: 1 + winstreak_lab_kit_mining_team_default: 1 + blocks_placed_lab: 1 + lab_win_rush_lab_kit_mining_team_default: 1 + wins_lab_kit_mining_team_default: 1 + tnt_madness_explained_last: 1560499717250 + tnt_madness_explained: 1 + hunters_vs_beasts_explained: 4 + hunters_vs_beasts_explained_last: 1563367859850 + slime_explained: 1 + slime_explained_last: 1563367897046 + blocks_placed: 17 + chests_opened: 8 + chests_opened_kit_mining_team_default: 6 + chests_opened_solo: 6 + deaths: 4 + deaths_kit_mining_team_default: 3 + deaths_solo: 3 + deaths_solo_insane: 3 + egg_thrown: 24 + kills_kit_mining_team_default: 2 + kills_monthly_b: 2 + kills_solo: 2 + kills_solo_insane: 2 + losses: 4 + losses_kit_mining_team_default: 3 + losses_solo: 3 + losses_solo_insane: 3 + most_kills_game_kit_mining_team_default: 1 + most_kills_game_solo: 1 + quits: 4 + survived_players_kit_mining_team_default: 13 + survived_players_solo: 13 + time_played_kit_mining_team_default: 137 + time_played_solo: 137 + void_kills_kit_mining_team_default: 1 + void_kills_solo: 1 + win_streak: 0 + active_projectiletrail: projectiletrail_testing_2 + shop_sort: rarity_descending + arrows_shot: 1 + arrows_shot_kit_mining_team_default: 1 + arrows_shot_solo: 1 + cosmetic_tokens: 0 + chests_opened_kit_ranked_ranked_default: 2 + chests_opened_ranked: 2 + deaths_kit_ranked_ranked_default: 1 + deaths_ranked: 1 + deaths_ranked_normal: 1 + losses_kit_ranked_ranked_default: 1 + losses_ranked: 1 + losses_ranked_normal: 1 + time_played_kit_ranked_ranked_default: 37 + time_played_ranked: 37 + longest_bow_kill: 2 + longest_bow_kill_kit_mining_team_default: 2 + longest_bow_kill_solo: 2 + melee_kills: 1 + melee_kills_kit_mining_team_default: 1 + melee_kills_solo: 1 + UHC: + coins: 16282 + saved_stats: true + clearup_achievement: true + TNTGames: + coins: 14590 + packages: + - shop_2018 + - tiered_achievement_flag_3 + new_spleef_double_jumps: 1 + new_kineticwizard_regen: 1 + new_bloodwizard_explode: 1 + new_spleef_repulsor: 1 + new_tntag_speedy: 1 + new_spleef_tripleshot: 1 + new_witherwizard_regen: 1 + new_witherwizard_explode: 1 + new_tntrun_double_jumps: 1 + new_firewizard_regen: 1 + wins: 0 + new_firewizard_explode: 1 + new_pvprun_double_jumps: 1 + new_bloodwizard_regen: 1 + new_icewizard_regen: 1 + new_icewizard_explode: 1 + new_kineticwizard_explode: 1 + Arcade: + coins: 44670 + Walls3: + coins: 15755 + herobrine_meters_walked_standard: 90 + meters_fallen: 2091 + herobrine_losses: 2 + losses_standard: 2 + meters_walked: 15739 + meters_walked_standard: 15724 + herobrine_losses_standard: 1 + meters_fallen_standard: 2086 + losses: 3 + games_played_standard: 2 + herobrine_games_played_standard: 1 + herobrine_meters_fallen: 35 + herobrine_meters_walked: 105 + herobrine_meters_fallen_standard: 30 + games_played: 3 + herobrine_games_played: 2 + time_played: 46 + losses_face_off: 1 + herobrine_time_played_face_off: 2 + time_played_face_off: 2 + herobrine_meters_walked_face_off: 15 + final_deaths_face_off: 1 + final_deaths: 2 + herobrine_total_deaths: 2 + herobrine_final_deaths: 1 + total_deaths: 3 + herobrine_games_played_face_off: 1 + games_played_face_off: 1 + herobrine_deaths_face_off: 1 + herobrine_time_played: 2 + herobrine_meters_fallen_face_off: 5 + meters_fallen_face_off: 5 + total_deaths_face_off: 2 + herobrine_total_deaths_face_off: 2 + herobrine_deaths: 1 + deaths: 1 + deaths_face_off: 1 + herobrine_final_deaths_face_off: 1 + herobrine_losses_face_off: 1 + meters_walked_face_off: 15 + classes: + herobrine: + skill_level_d: 1 + skill_level_dChecked5: true + checked4: true + unlocked: false + zombie: + skill_level_d: 1 + unlocked: false + checked4: true + skill_level_dChecked5: true + enderman: + checked4: true + skill_level_d: 1 + unlocked: false + skill_level_dChecked5: true + skeleton: + skill_level_dChecked5: true + checked4: true + skill_level_d: 1 + unlocked: false + packages: + - cakes_fix_flag_2 + - achievement_fix_flag + - legacy_achievement_a + blocks_broken: 39 + blocks_broken_standard: 39 + blocks_placed: 72 + blocks_placed_preparation: 8 + blocks_placed_preparation_standard: 8 + blocks_placed_standard: 72 + coins_gained: 100 + final_deaths_standard: 1 + hunter_blocks_broken: 39 + hunter_blocks_broken_standard: 39 + hunter_blocks_placed: 72 + hunter_blocks_placed_preparation: 8 + hunter_blocks_placed_preparation_standard: 8 + hunter_blocks_placed_standard: 72 + hunter_final_deaths: 1 + hunter_final_deaths_standard: 1 + hunter_games_played: 1 + hunter_games_played_standard: 1 + hunter_losses: 1 + hunter_losses_standard: 1 + hunter_meters_fallen: 2056 + hunter_meters_fallen_standard: 2056 + hunter_meters_walked: 15634 + hunter_meters_walked_speed: 1518 + hunter_meters_walked_speed_standard: 1518 + hunter_meters_walked_standard: 15634 + hunter_time_played: 44 + hunter_time_played_standard: 44 + hunter_total_deaths: 1 + hunter_total_deaths_standard: 1 + meters_walked_speed: 1518 + meters_walked_speed_standard: 1518 + time_played_standard: 44 + total_deaths_standard: 1 + Walls: + coins: 14575 + VampireZ: + coins: 14575 + updated_stats: true + Arena: + coins: 14575 + Quake: + coins: 14955 + packages: + - achievement_flag_3 + showKillPrefix: true + kills_solo_tourney: 21 + kills_dm_teams: 0 + kills: 0 + kills_teams: 0 + kills_timeattack: 0 + kills_dm: 0 + alternative_gun_cooldown_indicator: true + compass_selected: true + enable_sound: true + messageOthers' Kills/deaths: true + messageYour Kills: true + highest_killstreak: 6 + messageCoin Messages: true + messageYour Deaths: true + instantRespawn: true + messageKillstreaks: true + showDashCooldown: true + killstreaks_solo_tourney: 2 + headshots_solo_tourney: 7 + shots_fired_solo_tourney: 69 + kills_since_update_feb_2017_solo_tourney: 21 + distance_travelled_solo_tourney: 847 + deaths_solo_tourney: 13 + Paintball: + coins: 14575 + packages: + - achievement_flag_2 + GingerBread: + coins: 14575 + packages: + - achievementsupdatedd + - helmet_1_1_unlocked + - achievementsupdatedc + pants_active: GOLD_PANTS + skin_active: WHITE_KART;DEFAULT + frame_active: '{GingerbreadPart:{PartType:FRAME,PartRarity:BASIC}}' + jacket_active: GOLD_JACKET + shoes_active: GOLD_SHOES + helmet_active: HELMET_1_1 + engine_active: '{GingerbreadPart:{PartType:ENGINE,PartRarity:BASIC}}' + booster_active: '{GingerbreadPart:{PartType:TURBOCHARGER,PartRarity:BASIC}}' + HungerGames: + coins: 11881 + autoarmor: true + wins_teams_normal: 0 + wins: 0 + packages: + - new_stats_02_2019 + - fixachievements3 + - used_kit_knight + - used_killeffect_speed + wins_solo_normal: 0 + wins_backup: 0 + damage: 72 + damage_knight: 72 + damage_taken: 85 + damage_taken_knight: 85 + deaths: 2 + games_played: 2 + games_played_knight: 2 + time_played: 285 + time_played_knight: 285 + chests_opened: 2 + chests_opened_knight: 2 + exp_knight: 2 + SuperSmash: + coins: 8905 + Bedwars: + first_join_7: true + Experience: 974000 + bedwars_boxes: 14 + packages: + - islandtopper_gapple + - projectiletrail_cold + Prototype: + next_hype_seconds: 60 + total_hype: 19886 + pit_hype: 200 + hype: 19886 + skyblock_hype: 19686 + Pit: + pit_stats_ptl: + joins: 499 + playtime_minutes: 7645 + chat_messages: 851 + enchanted_tier2: 20 + enchanted_tier1: 27 + enchanted_tier3: 10 + cash_earned: -946245931 + diamond_items_purchased: 9 + jumped_into_pit: 362 + launched_by_launchers: 67 + left_clicks: 4734 + kills: 108 + melee_damage_dealt: 2615 + sword_hits: 438 + damage_dealt: 3513 + max_streak: 10 + damage_received: 1984 + melee_damage_received: 1328 + enderchest_opened: 7 + deaths: 42 + blocks_placed: 11 + lava_bucket_emptied: 3 + arrows_fired: 3449 + assists: 4 + arrow_hits: 89 + bow_damage_dealt: 130 + ghead_eaten: 1 + contracts_started: 1 + contracts_completed: 1 + blocks_broken: 4 + bow_damage_received: 16 + soups_drank: 3 + sewer_treasures_found: 2 + dark_pants_t2: 5 + profile: + cash_during_prestige_28: 3000000 + cash_during_prestige_29: 6000000 + outgoing_offers: + contract_choices: null + genesis_weekly_perks_perma_gold: 0 + last_save: 1588969523302 + king_quest: + kills: 329 + renown: 24 + last_completed: 1558427886708 + last_accepted: 1558424171397 + hat_color: 16711935 + reconessence_day: 1559572778303 + trade_timestamps: + genesis_weekly_perks_claim_item_angel: 0 + cash_during_prestige_20: 4113951.832458997 + cash_during_prestige_21: 2000000 + unlocks_20: + - tier: 0 + acquireDate: 1557600593499 + key: golden_heads + - tier: 0 + acquireDate: 1557600608426 + key: first_strike + - tier: 0 + acquireDate: 1557600648666 + key: dirty + - tier: 0 + acquireDate: 1557600681081 + key: lava_bucket + inv_enderchest: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + cash_during_prestige_22: 2000000 + cash_during_prestige_23: 2300984 + cash_during_prestige_24: 4000000 + genesis_spawn_in_base: true + cash: 40005033.531645566 + cash_during_prestige_25: 3002007021.0003123 + genesis_weekly_perks_perma_xp: 0 + cash_during_prestige_26: 3300000 + cash_during_prestige_27: 3000000 + leaderboard_stats: + Pit_raffle_tickets_2019_winter: 101 + Pit_rage_pit_damage_2019_winter: 0 + Pit_auction_bid_2019_spring: 2000000 + Pit_auction_bid_2020_spring: 10000000 + Pit_raffle_tickets_2019_spring: 101 + Pit_tdm_red_kills_2019_spring: 0 + Pit_blockhead_blocks_2019_spring: 0 + Pit_tdm_blue_kills_2020_spring: 0 + Pit_kotl_gold_2019_summer: 49 + Pit_blockhead_blocks_2020_spring: 0 + Pit_kotl_time_2019_summer: 2000 + genesis_perma_angel: 1 + selected_perk_3: null + selected_perk_2: null + selected_perk_1: null + selected_perk_0: null + last_contract: 1558551207276 + cash_during_prestige_3: 1000000 + gold_transactions: + - amount: 10000 + timestamp: 1588097039751 + cash_during_prestige_2: 1000000 + cash_during_prestige_5: 1000000 + cash_during_prestige_4: 1000000 + genesis_allegiance: DEMON + genesis_weekly_perks_claim_item_demon: 0 + cash_during_prestige_7: 1000000 + cash_during_prestige_6: 1000000 + cash_during_prestige_9: 1000000 + cash_during_prestige_8: 1000000 + cash_during_prestige_30: 50001096.025 + inv_contents: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + cash_during_prestige_31: 50000000 + cash_during_prestige_32: 50000000 + event_contest_claims: + - double_rewards + - blockhead + - beast + - dragon_egg + cash_during_prestige_33: 50000000 + cash_during_prestige_34: 50000000 + cash_during_prestige_35: 50010233.531645566 + cash_during_prestige_1: 1000000 + night_quests_enabled: true + cash_during_prestige_0: 1000000 + renown: 1342 + moved_achievements_1: true + moved_achievements_2: true + genesis_points: 10000 + raw_numbers_enabled: true + prestiges: + - index: 1 + xp_on_prestige: 65950 + timestamp: 1557600048111 + - index: 2 + xp_on_prestige: 138510 + timestamp: 1557600060880 + - index: 3 + xp_on_prestige: 217680 + timestamp: 1557600071280 + - index: 4 + xp_on_prestige: 303430 + timestamp: 1557600080882 + spire_stash_inv: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + last_lycanthropy: 1558544209530 + supporter_star_enabled: false + cheap_milk: false + zero_point_three_gold_transfer: true + renown_unlocks: + - tier: 0 + acquireDate: 1557600168917 + key: tenacity + - tier: 1 + acquireDate: 1557600170483 + key: tenacity + - tier: 0 + acquireDate: 1557600184928 + key: mysticism + - tier: 1 + acquireDate: 1557600186884 + key: mysticism + spire_stash_armor: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + cash_during_prestige_17: 1000000 + cash_during_prestige_18: 1000000 + cash_during_prestige_19: 1000000 + inv_armor: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + item_stash: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + genesis_allegiance_time: 1583391560810 + login_messages: + hotbar_favorites: + - 267 + - 0 + - 7 + - 335 + recent_kills: + - victim: 2d4c44f13dab49b0a988f7ced7e6fc38 + timestamp: 1587552109098 + apollo_enabled: false + xp: 71275580 + cash_during_prestige_10: 1000000 + cash_during_prestige_11: 1000000 + ended_contracts: + - difficulty: HARD + gold_reward: 2000 + requirements: + multikill: 3 + progress: + chunk_of_viles_reward: 1 + completion_date: 1558551219835 + remaining_ticks: 5740 + key: multikill + cash_during_prestige_12: 1000000 + bounties: + - amount: 100 + remainingTicks: 9223372036854776000 + issuer: fb7afb6de9ea47399893616134617808 + timestamp: 1585096862465 + - amount: 100 + remainingTicks: 9223372036854776000 + issuer: fb7afb6de9ea47399893616134617808 + timestamp: 1585096881059 + - amount: 100 + remainingTicks: 9223372036854776000 + issuer: fb7afb6de9ea47399893616134617808 + timestamp: 1585096881114 + - amount: 100 + remainingTicks: 9223372036854776000 + issuer: fb7afb6de9ea47399893616134617808 + timestamp: 1585096881165 + cash_during_prestige_13: 1000000 + cash_during_prestige_14: 1000000 + cash_during_prestige_15: 1000000 + cash_during_prestige_16: 1000000 + packages: + - supporter + MCGO: + coins: 96282476 + grenade_kills: 0 + packages: + - achievement_flag_7 + - neck_knife + - vip_ocelot_helmet + - vip_ocelot_armor + kills: 20 + bombs_defused: 1 + game_wins_deathmatch: 0 + grenadeKills: 0 + game_wins: 4 + kills_deathmatch: 0 + bombs_planted: 1 + headshot_kills: 16 + pocket_change: 9 + cop_kills: 11 + shots_fired: 724 + round_wins: 22 + deaths: 16 + criminal_kills: 9 + game_wins_alleyway: 1 + lastTourneyAd: 1586042640677 + game_plays: 4 + game_wins_melon factory: 2 + deaths_deathmatch: 0 + knife_damage_increase: 9 + knife_attack_delay: 9 + selectedKnifeDev: NECK_KNIFE + strength_training: 9 + bounty_hunter: 0 + body_armor_cost: 9 + selectedOcelotHelmetDev: VIP_OCELOT_HELMET + selectedOcelotChestplateDev: VIP_OCELOT_ARMOR + selectedCreeperChestplateDev: VIP_CREEPER_ARMOR + selectedCreeperHelmetDev: VIP_CREEPER_HELMET + pistol_damage_increase: 9 + pistol_recoil_reduction: 9 + pistol_reload_speed_reduction: 9 + selectedPistolDev: HK45 + magnum_damage_increase: 9 + magnum_reload_speed_reduction: 9 + magnum_recoil_reduction: 9 + magnum_cost_reduction: 9 + selectedMagnumDev: MAGNUM_REVOLVER + rifle_damage_increase: 9 + rifle_recoil_reduction: 9 + rifle_reload_speed_reduction: 9 + rifle_cost_reduction: 9 + selectedRifleDev: FN_FAL + game_wins_temple: 1 + cop_kills_tourney_mcgo_defusal_0: 31 + criminal_kills_tourney_mcgo_defusal_0: 38 + deaths_tourney_mcgo_defusal_0: 37 + game_plays_tourney_mcgo_defusal_0: 7 + headshot_kills_tourney_mcgo_defusal_0: 43 + kills_tourney_mcgo_defusal_0: 69 + round_wins_tourney_mcgo_defusal_0: 33 + shots_fired_tourney_mcgo_defusal_0: 2044 + game_wins_tourney_mcgo_defusal_0: 5 + game_wins_carrier: 1 + bombs_planted_tourney_mcgo_defusal_0: 5 + game_wins_sandstorm: 1 + bombs_defused_tourney_mcgo_defusal_0: 3 + Battleground: + coins: 8950 + TrueCombat: + coins: 460 + packages: + - cw_ach_flag1 + - cw_ach_flag4 + - cw_ach_flag3 + - cw_ach_flag2 + SkyBlock: + account: + selected_profile: f0a2d8aa0cae4b5294d509ee89f4da75 + last_save: 1588999950991 + backed_up_collection: skyblock_zback_v0.7.0 + lastSaveVersion: + pluginVersion: 0.7.47 + bootTime: 1567715745149 + gmVersion: 10.25.178 + hyVersion: 1.0.123 + server: mini149D + lastSaveTimestamp: 1567715800962 + skyblock_exp: 1202 + migrated_to_v2: true + collected_cake_years: + - 14 + migrated_to_v3: true + migrated_to_v4: true + winter_gifts_collected_37: + - 9 + - 38 + - 26 + profiles: + 05c9bb60e39e446382c6d5a7fe2fa0f0: + profile_id: 05c9bb60e39e446382c6d5a7fe2fa0f0 + cute_name: Strawberry + profile_version: 1 + stats: + deaths: 3779 + deaths_void: 3 + highest_crit_damage: 1063686.21904 + kills: 537 + kills_player: 19 + deaths_player: 3 + kills_random_slime: 1 + kills_splitter_spider_silverfish: 4 + kills_splitter_spider: 1 + kills_wither_skeleton: 3 + kills_blaze: 12 + kills_magma_cube: 12 + kills_fireball_magma_cube: 5 + kills_ghast: 1 + kills_zombie: 136 + kills_zombie_villager: 9 + auctions_created: 3 + auctions_fees: 273 + auctions_bids: 3 + auctions_highest_bid: 30418 + kills_lapis_zombie: 4 + kills_redstone_pigman: 46 + kills_emerald_slime: 49 + kills_diamond_skeleton: 47 + kills_diamond_zombie: 118 + kills_runic_zombie: 2 + deaths_emerald_slime: 1 + deaths_diamond_skeleton: 1 + kills_enderman: 55 + kills_watcher: 2 + deaths_enderman: 3770 + kills_skeleton: 9 + kills_spider: 2 + deaths_strong_dragon: 1 + collection: + COBBLESTONE: 143 + IRON_INGOT: 1 + COAL: 11 + STRING: 251 + BONE: 70 + BLAZE_ROD: 14 + MAGMA_CREAM: 10 + GHAST_TEAR: 1 + ROTTEN_FLESH: 164 + WHEAT: 5 + SLIME_BALL: 20 + SUGAR_CANE: 4 + ENDER_PEARL: 78 + ICE: 3330 + DIAMOND: 75210 + objectives: + collect_log: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_guide: + status: COMPLETE + progress: 0 + completed_at: 1564521216747 + public_island: + status: COMPLETE + progress: 0 + completed_at: 1565380679187 + explore_hub: + status: COMPLETE + progress: 0 + completed_at: 1560777126618 + explore_village: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_librarian: + status: COMPLETE + progress: 0 + completed_at: 1560791583565 + talk_to_farmer: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_blacksmith: + status: COMPLETE + progress: 0 + completed_at: 1560790961046 + talk_to_lumberjack: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_event_master: + status: COMPLETE + progress: 0 + completed_at: 1560791132339 + talk_to_auction_master: + status: COMPLETE + progress: 0 + completed_at: 1560639867708 + talk_to_banker: + status: COMPLETE + progress: 0 + completed_at: 1560714948098 + talk_to_fairy: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_fisherman_1: + status: ACTIVE + progress: 0 + completed_at: 0 + kill_danger_mobs: + status: COMPLETE + progress: 10 + completed_at: 1560874732153 + talk_to_lapis_miner: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_lazy_miner: + status: ACTIVE + progress: 0 + completed_at: 0 + increase_mining_skill_5: + status: COMPLETE + progress: 0 + completed_at: 1560927663739 + talk_to_farmhand_1: + status: ACTIVE + progress: 0 + completed_at: 0 + increase_farming_skill_5: + status: COMPLETE + progress: 0 + completed_at: 1560886259359 + deposit_coins: + status: COMPLETE + progress: 0 + completed_at: 1560714957700 + mine_coal: + status: COMPLETE + progress: 10 + completed_at: 1560791034914 + talk_to_blacksmith_2: + status: COMPLETE + progress: 0 + completed_at: 1560791067383 + increase_mining_skill: + status: COMPLETE + progress: 0 + completed_at: 1560791067383 + reforge_item: + status: COMPLETE + progress: 0 + completed_at: 1560791074765 + warp_gold_mine: + status: COMPLETE + progress: 0 + completed_at: 1560927627325 + enchant_item: + status: COMPLETE + progress: 0 + completed_at: 1560791626167 + increase_combat_skill_5: + status: COMPLETE + progress: 0 + completed_at: 1560793726149 + talk_to_rick: + status: ACTIVE + progress: 0 + completed_at: 0 + warp_blazing_fortress: + status: COMPLETE + progress: 0 + completed_at: 1560793830558 + talk_to_elle: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_bartender: + status: COMPLETE + progress: 0 + completed_at: 1567998158086 + increase_foraging_skill_5: + status: ACTIVE + progress: 0 + completed_at: 0 + warp_mushroom_desert: + status: ACTIVE + progress: 0 + completed_at: 0 + warp_deep_caverns: + status: COMPLETE + progress: 0 + completed_at: 1560927673028 + talk_to_lift_operator: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_nocturne_1: + status: COMPLETE + progress: 0 + completed_at: 1564462823926 + collect_runes: + status: COMPLETE + progress: 3 + completed_at: 1564462869130 + talk_to_nocturne_2: + status: COMPLETE + progress: 0 + completed_at: 1564462888432 + talk_to_carpenter: + status: COMPLETE + progress: 0 + completed_at: 1564505237119 + collect_wool_carpenter: + status: COMPLETE + progress: 0 + completed_at: 1564505264591 + talk_to_guber_1: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_end_dealer: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_telekinesis_applier: + status: COMPLETE + progress: 0 + completed_at: 1564521031211 + talk_to_artist_1: + status: COMPLETE + progress: 0 + completed_at: 1564594201747 + talk_to_artist_2: + status: COMPLETE + progress: 0 + completed_at: 1564594244722 + talk_to_artist_3: + status: ACTIVE + progress: 0 + completed_at: 0 + paint_canvas: + status: ACTIVE + progress: 0 + completed_at: 0 + fight_dragon: + status: COMPLETE + progress: 0 + completed_at: 1564941435041 + increase_combat_skill: + status: COMPLETE + progress: 0 + completed_at: 1567998158087 + warp_spiders_den: + status: ACTIVE + progress: 0 + completed_at: 0 + warp_the_end: + status: ACTIVE + progress: 0 + completed_at: 0 + quests: + collect_log: + status: ACTIVE + activated_at: 1560639341340 + activated_at_sb: 363637 + completed_at: 0 + completed_at_sb: 0 + explore_hub: + status: COMPLETE + activated_at: 1560639342911 + activated_at_sb: 363621 + completed_at: 1560777126619 + completed_at_sb: 501425 + explore_village: + status: ACTIVE + activated_at: 1560639342911 + activated_at_sb: 363621 + completed_at: 0 + completed_at_sb: 0 + talk_to_librarian: + status: COMPLETE + activated_at: 1560639342911 + activated_at_sb: 363621 + completed_at: 1560791626167 + completed_at_sb: 515923 + talk_to_farmer: + status: ACTIVE + activated_at: 1560639342911 + activated_at_sb: 363621 + completed_at: 0 + completed_at_sb: 0 + talk_to_blacksmith: + status: COMPLETE + activated_at: 1560639342911 + activated_at_sb: 363621 + completed_at: 1560927627325 + completed_at_sb: 651925 + talk_to_lumberjack: + status: ACTIVE + activated_at: 1560639342911 + activated_at_sb: 363621 + completed_at: 0 + completed_at_sb: 0 + talk_to_auction_master: + status: COMPLETE + activated_at: 1560639342911 + activated_at_sb: 363621 + completed_at: 1560639867708 + completed_at_sb: 364165 + talk_to_banker: + status: COMPLETE + activated_at: 1560639342912 + activated_at_sb: 363621 + completed_at: 1560714957700 + completed_at_sb: 439255 + kill_danger_mobs: + status: ACTIVE + activated_at: 1560641744901 + activated_at_sb: 366042 + completed_at: 0 + completed_at_sb: 0 + talk_to_lapis_miner: + status: ACTIVE + activated_at: 1560694694482 + activated_at_sb: 418991 + completed_at: 0 + completed_at_sb: 0 + talk_to_lazy_miner: + status: ACTIVE + activated_at: 1560695673768 + activated_at_sb: 419971 + completed_at: 0 + completed_at_sb: 0 + increase_mining_skill_5: + status: ACTIVE + activated_at: 1560695673768 + activated_at_sb: 419971 + completed_at: 0 + completed_at_sb: 0 + talk_to_farmhand_1: + status: ACTIVE + activated_at: 1560704362646 + activated_at_sb: 428653 + completed_at: 0 + completed_at_sb: 0 + increase_farming_skill_5: + status: COMPLETE + activated_at: 1560704362646 + activated_at_sb: 428653 + completed_at: 1560886259362 + completed_at_sb: 610557 + reforge_item: + status: COMPLETE + activated_at: 1560791067383 + activated_at_sb: 515366 + completed_at: 1560791074765 + completed_at_sb: 515373 + increase_combat_skill_5: + status: ACTIVE + activated_at: 1560793725656 + activated_at_sb: 518025 + completed_at: 0 + completed_at_sb: 0 + talk_to_rick: + status: ACTIVE + activated_at: 1560793725656 + activated_at_sb: 518025 + completed_at: 0 + completed_at_sb: 0 + increase_foraging_skill_5: + status: ACTIVE + activated_at: 1560886380028 + activated_at_sb: 610651 + completed_at: 0 + completed_at_sb: 0 + talk_to_nocturne_1: + status: COMPLETE + activated_at: 1564462792790 + activated_at_sb: 4187090 + completed_at: 1564462888434 + completed_at_sb: 4187186 + talk_to_carpenter: + status: COMPLETE + activated_at: 1564504929006 + activated_at_sb: 4229227 + completed_at: 1564505264592 + completed_at_sb: 4229563 + talk_to_guber_1: + status: ACTIVE + activated_at: 1564511322460 + activated_at_sb: 4235617 + completed_at: 0 + completed_at_sb: 0 + talk_to_end_dealer: + status: ACTIVE + activated_at: 1564511322460 + activated_at_sb: 4235617 + completed_at: 0 + completed_at_sb: 0 + talk_to_artist_1: + status: ACTIVE + activated_at: 1564594181013 + activated_at_sb: 4318456 + completed_at: 0 + completed_at_sb: 0 + level_experience: 48555 + last_interest_time: 7841790 + first_join: 1560639341555 + first_join_skyblock_time: 363637 + inv_contents: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + inv_armor: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + held_item_slot: 4 + active_effects: + ingame_time: 31094332013 + last_save: 1568122635288 + tutorial: + - first_join + - zone_village + - zone_farm + - zone_mine + first_join_hub: 1529 + visited_zones: + - village + - farm + - mine + - auction_house + opened_skyblock_menu_stamped: true + coin_purse: 86 + unlocked_coll_tiers: + - STRING_-1 + - COAL_-1 + - ICE_4 + - ICE_5 + death_count: 3777 + experience_skill_mining: 1211.8000000000002 + opened_recipes_menu_stamped: true + used_crafting_grid_stamped: true + bank_account: 1457.4032537059675 + bank_history: + - amount: 52.28294821647614 + timestamp: 1567715623442 + action: DEPOSIT + initiator_name: Bank Interest + - amount: 26.928306596248376 + timestamp: 1567792597342 + action: DEPOSIT + initiator_name: Bank Interest + - amount: 27.466872728173257 + timestamp: 1567864830220 + action: DEPOSIT + initiator_name: Bank Interest + - amount: 28.016210182736813 + timestamp: 1567976520841 + action: DEPOSIT + initiator_name: Bank Interest + last_interest: 28.57653438639152 + experience_skill_enchanting: 4449.387605903042 + collected_coal_stamped: true + experience_skill_combat: 3843955 + killed_first_mob_stamped: true + collected_wheat_stamped: true + experience_skill_farming: 1218 + experience_skill_foraging: 6301 + auction_starting_bid: 500 + auction_duration_ms: 21600000 + opened_collections_menu_stamped: true + auction_placed_bid_before: true + last_death: 7629479 + return_to_private_island_stamped: true + last_checked_interest: 1568122928283 + lastSaveVersion: + pluginVersion: 0.7.48 + bootTime: 1568122627184 + gmVersion: 10.25.185 + hyVersion: 1.0.124 + server: mini136T + lastSaveTimestamp: 1568122635317 + playtime_minutes: 9188 + playtime_minutes_modes_HUB: 3886 + quiver: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + achievement_sync_version: 1 + player_id: 20934ef9488c465180a78f861586b4cf + playtime_minutes_modes_DYNAMIC: 5169 + exploit_start_timestamp: 1568036995261 + exploit_block_counter: 0 + exploit_fish_counter: 0 + exploit_monster_counter: 24 + shop_throttle: + lastUpdate: 07-29-2019 + claimable_rewards: + - psychic + playtime_minutes_modes_MINING_1: 7 + playtime_minutes_modes_MINING_2: 12 + playtime_minutes_modes_COMBAT_3: 90 + experience_skill_carpentry: 281600 + playtime_minutes_modes_FORAGING_1: 16 + opened_starting_minion_stamped: true + private_island_spawn_location: 9.0,100.0,14.0,0.0,0.0 + damage_UNSTABLE_DRAGON_100: 0 + experience_skill_runecrafting: 30210 + ender_chest_contents: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + damage_STRONG_DRAGON_100: 0 + playtime_minutes_modes_FARMING_1: 5 + playtime_minutes_modes_COMBAT_1: 3 + slayer_quest: + type: zombie + tier: 0 + start_timestamp: 1568019333846 + completion_state: 0 + combat_xp: 609 + last_killed_mob_id: ZOMBIE_VILLAGER_1 + last_killed_timestamp: 1568021559876 + last_killed_mob_island: HUB + e397d9ed5e44463c9d074b3cfd7f8781: + profile_id: e397d9ed5e44463c9d074b3cfd7f8781 + cute_name: Mango + coop: + - 41d3abc2d749400c9090d5434d03831b + - 20934ef9488c465180a78f861586b4cf + profile_version: 1 + stats: + auctions_bids: 10 + auctions_highest_bid: 10000 + auctions_won: 8 + auctions_bought_common: 2 + auctions_gold_spent: 8 + auctions_bought_rare: 2 + auctions_bought_epic: 1 + auctions_bought_uncommon: 1 + deaths: 941 + deaths_void: 16 + auctions_created: 16 + auctions_fees: 6678 + highest_crit_damage: 2147483747.0236 + deaths_player: 5 + auctions_completed: 8 + auctions_sold_uncommon: 1 + auctions_gold_earned: 221000 + auctions_sold_common: 7 + deaths_zombie: 157 + kills: 238 + kills_zombie: 21 + items_fished: 1 + items_fished_large_treasure: 1 + kills_enderman: 37 + kills_skeleton_emperor: 1 + kills_skeleton: 10 + kills_spider: 6 + kills_zombie_villager: 2 + kills_player: 29 + deaths_spider: 4 + deaths_skeleton: 758 + kills_zealot_enderman: 132 + auctions_bought_legendary: 2 + deaths_zombie_villager: 1 + auctions_no_bids: 3 + collection: + COBBLESTONE: 217 + RAW_FISH: 5567 + RAW_FISH:1: 1 + PRISMARINE_CRYSTALS: 2 + RAW_CHICKEN: 15 + ROTTEN_FLESH: 26 + BONE: 41 + FEATHER: 12 + GOLD_INGOT: 10 + IRON_INGOT: 89 + LOG: 1018 + RAW_FISH:3: 5000 + SUGAR_CANE: 50000 + LEATHER: 80000 + LOG_2: 2230000 + WHEAT: 20 + SEEDS: 15 + NETHER_STALK: 10 + ENDER_PEARL: 441 + SPONGE: 2 + STRING: 6 + SPIDER_EYE: 1 + DIAMOND: 2 + MUSHROOM_COLLECTION: 6 + LOG_2:1: 5 + objectives: + collect_log: + status: COMPLETE + progress: 1 + completed_at: 1561978089282 + talk_to_guide: + status: COMPLETE + progress: 0 + completed_at: 1562003623396 + public_island: + status: COMPLETE + progress: 0 + completed_at: 1561047777334 + explore_hub: + status: COMPLETE + progress: 0 + completed_at: 1561430060615 + explore_village: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_librarian: + status: COMPLETE + progress: 0 + completed_at: 1563646979965 + talk_to_farmer: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_blacksmith: + status: COMPLETE + progress: 0 + completed_at: 1562688860191 + talk_to_lumberjack: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_event_master: + status: COMPLETE + progress: 0 + completed_at: 1561643208674 + talk_to_auction_master: + status: COMPLETE + progress: 0 + completed_at: 1561001429124 + talk_to_banker: + status: COMPLETE + progress: 0 + completed_at: 1560999846821 + talk_to_fairy: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_fisherman_1: + status: ACTIVE + progress: 0 + completed_at: 0 + deposit_coins: + status: COMPLETE + progress: 0 + completed_at: 1560999860222 + talk_to_lapis_miner: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_farmhand_1: + status: ACTIVE + progress: 0 + completed_at: 0 + increase_farming_skill_5: + status: ACTIVE + progress: 0 + completed_at: 0 + increase_foraging_skill_5: + status: ACTIVE + progress: 0 + completed_at: 0 + craft_workbench: + status: ACTIVE + progress: 0 + completed_at: 0 + increase_combat_skill_5: + status: COMPLETE + progress: 0 + completed_at: 1562169235699 + talk_to_rick: + status: ACTIVE + progress: 0 + completed_at: 0 + warp_blazing_fortress: + status: COMPLETE + progress: 0 + completed_at: 1562169267405 + talk_to_elle: + status: ACTIVE + progress: 0 + completed_at: 0 + mine_coal: + status: ACTIVE + progress: 0 + completed_at: 0 + enchant_item: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_carpenter: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_artist_1: + status: COMPLETE + progress: 0 + completed_at: 1563901203408 + talk_to_nocturne_1: + status: ACTIVE + progress: 0 + completed_at: 0 + collect_ink_sack: + status: COMPLETE + progress: 18 + completed_at: 1563901624726 + talk_to_artist_2: + status: COMPLETE + progress: 0 + completed_at: 1563901635629 + collect_dye: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_artist_3: + status: ACTIVE + progress: 0 + completed_at: 0 + paint_canvas: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_guber_1: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_end_dealer: + status: ACTIVE + progress: 0 + completed_at: 0 + fight_dragon: + status: COMPLETE + progress: 0 + completed_at: 1567029098185 + quests: + collect_log: + status: ACTIVE + activated_at: 1560999703024 + activated_at_sb: 724001 + completed_at: 0 + completed_at_sb: 0 + explore_hub: + status: COMPLETE + activated_at: 1560999832718 + activated_at_sb: 724128 + completed_at: 1561430060617 + completed_at_sb: 1274357 + explore_village: + status: ACTIVE + activated_at: 1560999832718 + activated_at_sb: 724128 + completed_at: 0 + completed_at_sb: 0 + talk_to_librarian: + status: ACTIVE + activated_at: 1560999832718 + activated_at_sb: 724128 + completed_at: 0 + completed_at_sb: 0 + talk_to_farmer: + status: ACTIVE + activated_at: 1560999832718 + activated_at_sb: 724128 + completed_at: 0 + completed_at_sb: 0 + talk_to_blacksmith: + status: ACTIVE + activated_at: 1560999832718 + activated_at_sb: 724128 + completed_at: 0 + completed_at_sb: 0 + talk_to_lumberjack: + status: ACTIVE + activated_at: 1560999832718 + activated_at_sb: 724128 + completed_at: 0 + completed_at_sb: 0 + talk_to_auction_master: + status: COMPLETE + activated_at: 1560999832718 + activated_at_sb: 724128 + completed_at: 1561001429125 + completed_at_sb: 725725 + talk_to_banker: + status: COMPLETE + activated_at: 1560999832718 + activated_at_sb: 724128 + completed_at: 1560999860222 + completed_at_sb: 724158 + talk_to_lapis_miner: + status: ACTIVE + activated_at: 1561055479910 + activated_at_sb: 779775 + completed_at: 0 + completed_at_sb: 0 + talk_to_farmhand_1: + status: ACTIVE + activated_at: 1561156726744 + activated_at_sb: 881025 + completed_at: 0 + completed_at_sb: 0 + increase_farming_skill_5: + status: ACTIVE + activated_at: 1561156726744 + activated_at_sb: 881025 + completed_at: 0 + completed_at_sb: 0 + increase_foraging_skill_5: + status: ACTIVE + activated_at: 1561224531672 + activated_at_sb: 948800 + completed_at: 0 + completed_at_sb: 0 + increase_combat_skill_5: + status: ACTIVE + activated_at: 1562169235209 + activated_at_sb: 1893533 + completed_at: 0 + completed_at_sb: 0 + talk_to_rick: + status: ACTIVE + activated_at: 1562169235209 + activated_at_sb: 1893533 + completed_at: 0 + completed_at_sb: 0 + talk_to_carpenter: + status: ACTIVE + activated_at: 1563892739022 + activated_at_sb: 3617031 + completed_at: 0 + completed_at_sb: 0 + talk_to_artist_1: + status: COMPLETE + activated_at: 1563901099360 + activated_at_sb: 3625398 + completed_at: 1563901635629 + completed_at_sb: 3625935 + talk_to_nocturne_1: + status: ACTIVE + activated_at: 1563901099360 + activated_at_sb: 3625398 + completed_at: 0 + completed_at_sb: 0 + talk_to_guber_1: + status: ACTIVE + activated_at: 1566522072219 + activated_at_sb: 6246360 + completed_at: 0 + completed_at_sb: 0 + talk_to_end_dealer: + status: ACTIVE + activated_at: 1566522072219 + activated_at_sb: 6246360 + completed_at: 0 + completed_at_sb: 0 + coop_initiator: true + coop_confirmed: true + tutorial: + - first_join + - zone_village + - zone_bank + - zone_auction_house + level_experience: 253154 + first_join: 1560999703490 + first_join_skyblock_time: 724001 + opened_skyblock_menu_stamped: true + inv_contents: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + inv_armor: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + held_item_slot: 8 + active_effects: + ingame_time: 41195106341 + last_save: 1568176208197 + first_join_hub: 50885 + visited_zones: + - village + - bank + - auction_house + - mine + coin_purse: 62363.3 + last_checked_interest: 1568176274730 + last_interest: 4902.617091263573 + experience_skill_farming: 33151 + opened_starting_minion_stamped: true + experience_skill_mining: 21.700000000000003 + unlocked_coll_tiers: + - LOG_2 + - LOG_1 + - LOG_5 + - LOG_4 + auction_placed_bid_before: true + opened_collections_menu_stamped: true + last_interest_time: 1119763 + playtime_minutes: 18248 + playtime_minutes_modes_DYNAMIC: 10525 + playtime_minutes_modes_HUB: 6954 + auction_starting_bid: 500 + auction_duration_ms: 21600000 + dark_auction_items: + death_count: 940 + used_crafting_grid_stamped: true + quiver_size: 1 + quiver: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + talisman_bag_size: 1 + talisman_bag: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + playtime_minutes_modes_FARMING_1: 11 + return_to_private_island_stamped: true + experience_skill_foraging: 3600 + collected_log_stamped: true + last_death: 7424262 + achievement_sync_version: 1 + crafted_generators: + - COBBLESTONE_1 + - FLOWER_1 + playtime_minutes_modes_DARK_AUCTION: 4 + opened_recipes_menu_stamped: true + fishing_bag: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + experience_skill_combat: 32804 + killed_first_mob_stamped: true + playtime_minutes_modes_COMBAT_1: 1 + playtime_minutes_modes_COMBAT_2: 377 + exploit_start_timestamp: 1563895429190 + exploit_block_counter: 49 + exploit_fish_counter: 0 + exploit_monster_counter: 2 + playtime_minutes_modes_MINING_2: 44 + playtime_minutes_modes_FARMING_2: 40 + playtime_minutes_modes_FORAGING_1: 25 + collected_wheat_stamped: true + experience_skill_fishing: 300 + experience_skill_enchanting: 0 + damage_MAGMA_CUBE_BOSS_100: 0 + clicked_in_starting_minion_stamped: true + lastSaveVersion: + pluginVersion: 0.7.48 + bootTime: 1568175974089 + gmVersion: 10.25.185 + hyVersion: 1.0.124 + server: mini1S + lastSaveTimestamp: 1568176208204 + ender_chest_contents: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + playtime_minutes_modes_COMBAT_3: 267 + player_id: 20934ef9488c465180a78f861586b4cf + claimable_rewards: + damage_WISE_DRAGON_100: 0 + ffee4d14b8b844c58debf75cc2264114: + profile_id: ffee4d14b8b844c58debf75cc2264114 + cute_name: Cucumber + coop: + - 08d8787d1bc641a6ace77c39b75f86b8 + - 20934ef9488c465180a78f861586b4cf + profile_version: 1 + stats: + auctions_created: 1 + auctions_fees: 550 + highest_crit_damage: 27406120.8035 + kills: 177 + kills_enderman: 42 + kills_zealot_enderman: 70 + kills_endermite: 5 + kills_watcher: 30 + kills_obsidian_wither: 30 + deaths: 1 + deaths_void: 1 + collection: + COBBLESTONE: 64 + ENDER_PEARL: 236 + OBSIDIAN: 122 + objectives: + collect_log: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_guide: + status: ACTIVE + progress: 0 + completed_at: 0 + public_island: + status: ACTIVE + progress: 0 + completed_at: 0 + explore_hub: + status: ACTIVE + progress: 0 + completed_at: 0 + explore_village: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_librarian: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_farmer: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_blacksmith: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_lumberjack: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_event_master: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_auction_master: + status: COMPLETE + progress: 0 + completed_at: 1564776279116 + talk_to_banker: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_fairy: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_fisherman_1: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_carpenter: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_artist_1: + status: ACTIVE + progress: 0 + completed_at: 0 + paint_canvas: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_guber_1: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_end_dealer: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_lazy_miner: + status: ACTIVE + progress: 0 + completed_at: 0 + increase_mining_skill_5: + status: ACTIVE + progress: 0 + completed_at: 0 + talk_to_telekinesis_applier: + status: ACTIVE + progress: 0 + completed_at: 0 + fight_dragon: + status: COMPLETE + progress: 0 + completed_at: 1566843733110 + quests: + collect_log: + status: ACTIVE + activated_at: 1564713551380 + activated_at_sb: 4437849 + completed_at: 0 + completed_at_sb: 0 + explore_hub: + status: ACTIVE + activated_at: 1564776127945 + activated_at_sb: 4500426 + completed_at: 0 + completed_at_sb: 0 + explore_village: + status: ACTIVE + activated_at: 1564776127945 + activated_at_sb: 4500426 + completed_at: 0 + completed_at_sb: 0 + talk_to_librarian: + status: ACTIVE + activated_at: 1564776127945 + activated_at_sb: 4500426 + completed_at: 0 + completed_at_sb: 0 + talk_to_farmer: + status: ACTIVE + activated_at: 1564776127945 + activated_at_sb: 4500426 + completed_at: 0 + completed_at_sb: 0 + talk_to_blacksmith: + status: ACTIVE + activated_at: 1564776127946 + activated_at_sb: 4500426 + completed_at: 0 + completed_at_sb: 0 + talk_to_lumberjack: + status: ACTIVE + activated_at: 1564776127946 + activated_at_sb: 4500426 + completed_at: 0 + completed_at_sb: 0 + talk_to_auction_master: + status: COMPLETE + activated_at: 1564776127946 + activated_at_sb: 4500426 + completed_at: 1564776279116 + completed_at_sb: 4500576 + talk_to_banker: + status: ACTIVE + activated_at: 1564776127946 + activated_at_sb: 4500426 + completed_at: 0 + completed_at_sb: 0 + talk_to_carpenter: + status: ACTIVE + activated_at: 1564776127946 + activated_at_sb: 4500426 + completed_at: 0 + completed_at_sb: 0 + talk_to_artist_1: + status: ACTIVE + activated_at: 1564776127946 + activated_at_sb: 4500426 + completed_at: 0 + completed_at_sb: 0 + talk_to_guber_1: + status: ACTIVE + activated_at: 1564800858904 + activated_at_sb: 4525157 + completed_at: 0 + completed_at_sb: 0 + talk_to_end_dealer: + status: ACTIVE + activated_at: 1564800858904 + activated_at_sb: 4525157 + completed_at: 0 + completed_at_sb: 0 + talk_to_lazy_miner: + status: ACTIVE + activated_at: 1566582556697 + activated_at_sb: 6306855 + completed_at: 0 + completed_at_sb: 0 + increase_mining_skill_5: + status: ACTIVE + activated_at: 1566582556697 + activated_at_sb: 6306855 + completed_at: 0 + completed_at_sb: 0 + last_death: 6277622 + coop_initiator: true + lastSaveVersion: + pluginVersion: 0.7.47 + bootTime: 1567715745149 + gmVersion: 10.25.178 + hyVersion: 1.0.123 + server: mini149D + lastSaveTimestamp: 1567715800962 + coop_confirmed: true + tutorial: + - first_join + - zone_village + - zone_auction_house + - zone_mountain + level_experience: 5892 + first_join: 1564713551429 + first_join_skyblock_time: 4437849 + inv_contents: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + inv_armor: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + held_item_slot: 8 + active_effects: + ingame_time: 165350243 + last_save: 1566850056754 + last_checked_interest: 1566850348189 + achievement_sync_version: 1 + playtime_minutes: 523 + playtime_minutes_modes_DYNAMIC: 257 + opened_skyblock_menu_stamped: true + last_interest: 0 + visited_zones: + - dynamic_portal_island + - village + - auction_house + - mountain + opened_starting_minion_stamped: true + experience_skill_mining: 6.4 + unlocked_coll_tiers: + - OBSIDIAN_-1 + - ENDER_PEARL_1 + - ENDER_PEARL_-1 + - COBBLESTONE_-1 + first_join_hub: 24010008 + playtime_minutes_modes_HUB: 221 + auction_starting_bid: 500 + auction_duration_ms: 21600000 + coin_purse: 3429414 + lastAhMessage: 1564776327230 + experience_skill_enchanting: 0 + experience_skill_runecrafting: 34945 + exploit_start_timestamp: 1564800865260 + exploit_block_counter: 0 + exploit_fish_counter: 0 + exploit_monster_counter: 188 + experience_skill_combat: 696752 + killed_first_mob_stamped: true + playtime_minutes_modes_COMBAT_3: 42 + damage_UNSTABLE_DRAGON_100: 0 + death_count: 1 + playtime_minutes_modes_MINING_1: 3 + packages: + - visited_hub_zone_village + - unlocked_collection_mining_cobblestone + - visited_hub_zone_mushroom_desert + - unlocked_collection_mining_iron_ingot + joined_version: 0.7.364 + setting_profile_viewer: false + setting_guest_invites: false + itemDetectorAlerts: 61 + setting_coop_invites: false + idtoken: 3294 + setting_double_tap_to_drop: false + profiles_v2: + 05c9bb60e39e446382c6d5a7fe2fa0f0: + profile_id: 05c9bb60e39e446382c6d5a7fe2fa0f0 + cute_name: Strawberry + e397d9ed5e44463c9d074b3cfd7f8781: + profile_id: e397d9ed5e44463c9d074b3cfd7f8781 + cute_name: Mango + ffee4d14b8b844c58debf75cc2264114: + profile_id: ffee4d14b8b844c58debf75cc2264114 + cute_name: Cucumber + ee304bc89e7841cc9018273a26e3bac8: + profile_id: ee304bc89e7841cc9018273a26e3bac8 + cute_name: Watermelon + 8142550b194545f99b9377f67281b989: + profile_id: 8142550b194545f99b9377f67281b989 + cute_name: Orange + profiles_v3: + 20934ef9488c465180a78f861586b4cf: + profile_id: 20934ef9488c465180a78f861586b4cf + cute_name: Orange + 59f2f4d89c8c4fd6bc9f707bc4b23ec5: + profile_id: 59f2f4d89c8c4fd6bc9f707bc4b23ec5 + cute_name: Watermelon + bfbb47836f06483fbbf460cd599ae743: + profile_id: bfbb47836f06483fbbf460cd599ae743 + cute_name: Mango + 05c9bb60e39e446382c6d5a7fe2fa0f0: + profile_id: 05c9bb60e39e446382c6d5a7fe2fa0f0 + cute_name: Strawberry + 6d10b93252ad419ab79e5149f30692c6: + profile_id: 6d10b93252ad419ab79e5149f30692c6 + cute_name: Cucumber + profiles_v4: + bf7c14fb018946899d944d56e65222d2: + profile_id: bf7c14fb018946899d944d56e65222d2 + cute_name: Pineapple + latestUpdateSeen: skyblock-v0.7.8 + achievement_magma_cream_consumed: 1 + setting_api_skills: true + setting_api_collections: true + setting_api_inventory: true + setting_play_music: false + setting_pickup_rarity_filter: RARE + setting_hide_friend_pets: false + SpeedUHC: + coins: 260 + score: 0 + movedOver: true + MurderMystery: + mm_chests: 11 + packages: + - deathcry_dinosaur + Duels: + duels_chests: 11 + packages: + - emblem_trophy + - killmessages_rainbow_km + - projectile_trail_note_spiral + - projectile_trail_random + show_lb_option: on + games_played_duels: 27 + chat_enabled: on + matchHistory2: + - 'BOW_DUEL§7 - §aWIN§7 - §aMode: 0§7 - §aOverall: 0§7 - §8W[Minikloon]§7 - §8L[TiiBas_]' + - 'UHC_DUEL§7 - §cLOSS§7 - §aMode: 0§7 - §aOverall: 0§7 - §8W[stayindead]§7 - §8L[Minikloon]' + - 'UHC_DUEL§7 - §cLOSS§7 - §aMode: 0§7 - §aOverall: 0§7 - §8W[Xoku]§7 - §8L[Minikloon]' + - 'UHC_DUEL§7 - §aWIN§7 - §aMode: 0§7 - §aOverall: 0§7 - §8W[Minikloon]§7 - §8L[remi_coasterman]' + bow_duel_bow_hits: 42 + bow_duel_bow_shots: 156 + bow_duel_damage_dealt: 155 + bow_duel_health_regenerated: 66 + bow_duel_rounds_played: 9 + bow_hits: 74 + bow_shots: 242 + damage_dealt: 391 + health_regenerated: 394 + rounds_played: 25 + skywars_rookie_title_prestige: 1 + op_rookie_title_prestige: 1 + blitz_rookie_title_prestige: 1 + tnt_games_rookie_title_prestige: 1 + mega_walls_rookie_title_prestige: 1 + classic_rookie_title_prestige: 1 + no_debuff_rookie_title_prestige: 1 + bridge_rookie_title_prestige: 1 + all_modes_rookie_title_prestige: 1 + bow_rookie_title_prestige: 1 + uhc_rookie_title_prestige: 1 + sumo_rookie_title_prestige: 1 + combo_rookie_title_prestige: 1 + duels_recently_played2: UHC_DUEL#UHC_MEETUP#UHC_DUEL + selected_1_new: sumo + selected_2_new: blitz + current_winstreak_mode_uhc_duel: 0 + maps_won_on: + - Spikerock Bay + - Fractal + - Reef + - Skyport + current_winstreak: 0 + current_uhc_winstreak: 0 + coins: 1800000 + coins_gained: 162 + deaths: 4 + golden_apples_eaten: 15 + losses: 4 + melee_hits: 251 + melee_swings: 984 + uhc_duel_bow_hits: 31 + uhc_duel_bow_shots: 73 + uhc_duel_damage_dealt: 221 + uhc_duel_deaths: 4 + uhc_duel_golden_apples_eaten: 15 + uhc_duel_health_regenerated: 323 + uhc_duel_losses: 4 + uhc_duel_melee_hits: 216 + uhc_duel_melee_swings: 891 + uhc_duel_rounds_played: 12 + best_winstreak_mode_uhc_duel: 3 + best_uhc_winstreak: 3 + best_overall_winstreak: 3 + kills: 3 + uhc_duel_kills: 3 + uhc_duel_wins: 3 + wins: 3 + shop_sort: rarity_descending + active_projectile_trail: projectile_trail_random + blitz_duels_kit: Knight + blitz_duel_damage_dealt: 9 + blitz_duel_health_regenerated: 4 + blitz_duel_melee_hits: 3 + blitz_duel_melee_swings: 10 + blitz_duel_rounds_played: 1 + bowspleef_duel_bow_shots: 11 + bowspleef_duel_rounds_played: 1 + sumo_duel_melee_hits: 29 + sumo_duel_melee_swings: 60 + sumo_duel_rounds_played: 1 + classic_duel_bow_hits: 1 + classic_duel_bow_shots: 2 + classic_duel_damage_dealt: 6 + classic_duel_health_regenerated: 1 + classic_duel_melee_hits: 3 + classic_duel_melee_swings: 23 + classic_duel_rounds_played: 1 + BuildBattle: + packages: + - knights_hall + - tnt_hat + Tag: + mainlobby_halloween_2019_candyhunt_1: true + mainlobby_easter_2020_egghunt_38_86_17: true + Legacy: + next_tokens_seconds: 103 + quakecraft_tokens: 1 + tokens: 1 + total_tokens: 1 + stats: + Walls3: + coins: 8025 + classes: + herobrine: + skill_level_d: 1 + skill_level_dChecked5: true + unlocked: false + checked4: true + skeleton: + skill_level_dChecked5: true + skill_level_d: 1 + checked4: true + unlocked: false + enderman: + skill_level_d: 1 + skill_level_dChecked5: true + unlocked: false + checked4: true + zombie: + skill_level_d: 1 + skill_level_dChecked5: true + checked4: true + unlocked: false + packages: + - legacy_achievement_a + - achievement_fix_flag + - cakes_fix_flag_2 + SkyBlock: + profiles: + 20934ef9488c465180a78f861586b4cf: + profile_id: 20934ef9488c465180a78f861586b4cf + cute_name: Orange + 974b2a9e0d6d41819dd18a05fb228965: + profile_id: 974b2a9e0d6d41819dd18a05fb228965 + cute_name: Banana + b59f6cd9ea734a4da2ff011808855e6b: + profile_id: b59f6cd9ea734a4da2ff011808855e6b + cute_name: Cucumber + Arena: + coins: 7600 + GingerBread: + coins: 7730 + lastTourneyAd: 1596834948555 + Paintball: + coins: 7600 + Quake: + coins: 7600 + VampireZ: + coins: 7600 + Walls: + coins: 7600 + SkyWars: + coins: 10940 + levelFormatted: §c5§60§e✌§r + souls: 10 + packages: + - update_solo_team_kits2 + - update_solo_team_kits_and_perks + - update_solo_team_perk_levels + - update_opals_prestige + skywars_experience: 395001 + selected_prestige_icon: sapphire_prestige + opals: 9 + Battleground: + coins: 6165 + TNTGames: + coins: 7989 + wins: 0 + new_bloodwizard_regen: 1 + new_kineticwizard_explode: 1 + new_tntrun_double_jumps: 1 + new_icewizard_regen: 1 + new_pvprun_double_jumps: 1 + new_firewizard_explode: 1 + packages: + - shop_2018 + - tiered_achievement_flag_3 + - clicked_tnt_run_npc + new_bloodwizard_explode: 1 + new_spleef_repulsor: 1 + new_tntag_speedy: 1 + new_witherwizard_regen: 1 + new_firewizard_regen: 1 + new_spleef_double_jumps: 1 + new_spleef_tripleshot: 1 + new_icewizard_explode: 1 + new_witherwizard_explode: 1 + new_kineticwizard_regen: 1 + run_potions_splashed_on_players: 0 + record_tntrun: 41 + deaths_tntrun: 1 + winstreak: 0 + Arcade: + coins: 20131 + items_found_scuba_simulator: 12 + total_points_scuba_simulator: 16 + SuperSmash: + coins: 6000 + UHC: + coins: 8025 + saved_stats: true + clearup_achievement: true + Pit: + profile: + renown: 60 + moved_achievements_1: true + outgoing_offers: + moved_achievements_2: true + items_last_buy: + last_save: 1603799021509 + king_quest: + kills: 15 + reconessence_day: 1590784751615 + prestiges: + - index: 1 + xp_on_prestige: 65950 + timestamp: 1589047801738 + - index: 2 + xp_on_prestige: 138510 + timestamp: 1589508928218 + - index: 3 + xp_on_prestige: 217680 + timestamp: 1589660792967 + - index: 4 + xp_on_prestige: 303430 + timestamp: 1590784724497 + trade_timestamps: + spire_stash_inv: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + zero_point_three_gold_transfer: true + unlocks_1: + - tier: 0 + acquireDate: 1589047944446 + key: gladiator + - tier: 0 + acquireDate: 1589047952114 + key: strength_chaining + death_recaps: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + spire_stash_armor: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + cash: 1002238.44 + last_midfight_disconnect: 1590908934688 + leaderboard_stats: + selected_perk_3: null + selected_perk_2: null + inv_armor: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + selected_perk_1: null + selected_perk_0: null + selected_killstreak_2: null + cash_during_prestige_3: 10000000 + gold_transactions: + - amount: 0 + timestamp: 1591718974646 + selected_killstreak_1: null + cash_during_prestige_2: 100002.5 + login_messages: + selected_killstreak_0: null + hotbar_favorites: + - 29 + - 261 + - 1 + - 7 + cash_during_prestige_5: 1002238.44 + cash_during_prestige_4: 1000702.4 + selected_killstreak_3: null + inv_contents: + type: 0 + data: + - 31 + - -117 + - 8 + - 0 + xp: 494700 + bounties: + - amount: 100 + remainingTicks: 9223372036854776000 + issuer: fb7afb6de9ea47399893616134617808 + timestamp: 1598412600946 + cash_during_prestige_1: 1000100384.4250002 + cash_during_prestige_0: 1000000000 + pit_stats_ptl: + joins: 19 + cash_earned: 2012203330 + chat_messages: 55 + ingots_cash: 24 + ingots_picked_up: 24 + jumped_into_pit: 77 + assists: 26 + damage_dealt: 427 + damage_received: 669 + deaths: 17 + kills: 15 + left_clicks: 1331 + melee_damage_dealt: 424 + melee_damage_received: 610 + playtime_minutes: 145 + sword_hits: 202 + packages: + - supporter + HungerGames: + coins: 7759 + packages: + - new_stats_02_2019 + - fixachievements3 + - used_kit_knight + wins_teams_normal: 0 + wins_solo_normal: 0 + autoarmor: true + wins_backup: 0 + wins: 0 + deaths: 7 + time_played: 2222 + arrows_fired: 2 + arrows_fired_knight: 2 + damage_taken: 79 + damage_taken_knight: 79 + games_played: 6 + games_played_knight: 6 + time_played_knight: 2222 + blitz_uses: 13 + damage: 9 + damage_knight: 9 + exp_knight: 4 + lastTourneyAd: 1602982598070 + MCGO: + coins: 5640 + pocket_change: 0 + game_wins_deathmatch: 0 + game_wins: 0 + packages: + - achievement_flag_7 + grenade_kills: 0 + bombs_defused: 0 + headshot_kills: 0 + grenadeKills: 0 + kills_deathmatch: 0 + kills: 0 + bombs_planted: 0 + Duels: + show_lb_option: on + chat_enabled: on + games_played_duels: 8 + all_modes_rookie_title_prestige: 1 + blitz_rookie_title_prestige: 1 + sumo_rookie_title_prestige: 1 + combo_rookie_title_prestige: 1 + tnt_games_rookie_title_prestige: 1 + classic_rookie_title_prestige: 1 + mega_walls_rookie_title_prestige: 1 + skywars_rookie_title_prestige: 1 + uhc_rookie_title_prestige: 1 + no_debuff_rookie_title_prestige: 1 + bridge_rookie_title_prestige: 1 + bow_rookie_title_prestige: 1 + op_rookie_title_prestige: 1 + selected_1_new: sumo + selected_2_new: blitz + damage_dealt: 123 + melee_hits: 94 + melee_swings: 231 + rounds_played: 8 + uhc_duel_damage_dealt: 87 + uhc_duel_melee_hits: 90 + uhc_duel_melee_swings: 221 + uhc_duel_rounds_played: 4 + sw_duels_kit_new3: kit_ranked_ranked_champion + blocks_placed: 14 + sw_duel_blocks_placed: 14 + sw_duel_damage_dealt: 10 + sw_duel_melee_hits: 4 + sw_duel_melee_swings: 10 + sw_duel_rounds_played: 2 + duels_recently_played2: UHC_DUEL## + current_uhc_winstreak: 0 + current_winstreak_mode_uhc_duel: 0 + current_winstreak: 0 + bow_hits: 17 + bow_shots: 59 + coins: 30 + deaths: 3 + golden_apples_eaten: 6 + health_regenerated: 87 + losses: 3 + uhc_duel_bow_hits: 10 + uhc_duel_bow_shots: 21 + uhc_duel_deaths: 2 + uhc_duel_golden_apples_eaten: 6 + uhc_duel_health_regenerated: 80 + uhc_duel_losses: 2 + bow_duel_bow_hits: 7 + bow_duel_bow_shots: 38 + bow_duel_damage_dealt: 26 + bow_duel_health_regenerated: 7 + bow_duel_rounds_played: 2 + current_winstreak_mode_bow_duel: 0 + current_bow_winstreak: 0 + bow_duel_deaths: 1 + bow_duel_losses: 1 + TrueCombat: + coins: 30 + MurderMystery: + packages: + - displayed_youtuber_book + Bedwars: + Experience: 974000 + first_join_7: true + bedwars_boxes: 1 + skyblock_free_cookie: 1599590573361 + scorpius_bribe_96: 1603235714849 + claimed_century_cake: 1604475415951 + '400': + $ref: '#/components/responses/MissingFields' + '403': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/RateLimitError' + /playerCount: + get: + tags: + - metadata + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/playerCount.md + summary: Returns current player count. + description: | + #### Usage + ```typescript + const playerCount = await client.playerCount(); + ``` + responses: + '200': + description: An object describing the current player count on the Hypixel network. + headers: + ratelimit-limit: + $ref: '#/components/headers/ratelimit-limit' + ratelimit-remaining: + $ref: '#/components/headers/ratelimit-remaining' + ratelimit-reset: + $ref: '#/components/headers/ratelimit-reset' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + playerCount: + type: integer + example: 75612 + description: Total players on the network + required: + - playerCount + '400': + $ref: '#/components/responses/MissingFields' + '403': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/RateLimitError' + /recentGames: + get: + tags: + - player + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/recentGames.md + summary: Returns recent games of a player. A maximum of 100 games are returned and recent games are only stored for up to 3 days at this time. + description: | + Players can disable this endpoint via in-game settings. When done so the API will return as if there is no games. + #### Usage + ```typescript + const recentGames = await client.recentGames.uuid("20934ef9488c465180a78f861586b4cf"); + ``` + parameters: + - $ref: '#/components/parameters/PlayerUuidRequired' + responses: + '200': + description: An object describing the player's recent games. + headers: + ratelimit-limit: + $ref: '#/components/headers/ratelimit-limit' + ratelimit-remaining: + $ref: '#/components/headers/ratelimit-remaining' + ratelimit-reset: + $ref: '#/components/headers/ratelimit-reset' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + games: + type: array + description: Watchdog's bans in the last minute. + items: + type: object + properties: + date: + type: number + example: 1590850836485 + gameType: + type: string + example: BEDWARS + mode: + type: string + example: FOUR_FOUR + map: + type: string + example: Dreamgrove + ended: + type: number + example: 1590850919917 + required: + - date + - gameType + - mode + - map + required: + - games + '400': + $ref: '#/components/responses/MissingFields' + '403': + $ref: '#/components/responses/Unauthorized' + '422': + $ref: '#/components/responses/MalformedUUID' + '429': + $ref: '#/components/responses/RateLimitError' + /resources/achievements: + get: + tags: + - metadata + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/resources.md + summary: Retrieve a list of Hypixel network achievements. + description: | + _Does not require an API key._ + #### Usage + ```typescript + const achievements = await client.resources.achievements(); + ``` + security: [] + responses: + '200': + description: | + An object describing all the achievements on the network in the `achievements` key. + Each property is a game mode, and each game mode contains the one time achievements, tiered achievements, total points and total legacy points. + The one time and tiered objects contain each achievement and it's information. + content: + application/json: + schema: + $ref: "#/components/schemas/AchievementsResourceResponse" + example: + success: true + lastUpdated: 1604706817946 + achievements: + arcade: + one_time: + CREEPER_ATTACK_SURVIVAL: + points: 10 + name: 'Creeper Attack: Creeeep' + description: Survive Creeper Attack without dying + gamePercentUnlocked: 7.016806390981579 + globalPercentUnlocked: 3.194439338105325 + tiered: + ZOMBIES_NICE_SHOT: + name: 'Zombies: Nice Shot' + description: Get %s zombie kills + tiers: + - tier: 1 + points: 5 + amount: 100 + - tier: 2 + points: 10 + amount: 500 + - tier: 3 + points: 15 + amount: 1000 + - tier: 4 + points: 20 + amount: 2500 + total_points: 1600 + total_legacy_points: 5 + arena: + one_time: + MY_NEW_HAT: + points: 5 + name: My New Hat + description: Win wearing an Epic hat + gamePercentUnlocked: 0.40878630320523257 + globalPercentUnlocked: 0.03239382978262079 + tiered: + POWERUP: + name: Powerup! + description: Activate %s powerups + tiers: + - tier: 1 + points: 5 + amount: 10 + - tier: 2 + points: 10 + amount: 100 + - tier: 3 + points: 15 + amount: 250 + - tier: 4 + points: 20 + amount: 500 + total_points: 710 + total_legacy_points: 0 + bedwars: + one_time: + IRON_PUNCH: + points: 5 + name: Iron Punch + description: Get a kill with an Iron Golem + gamePercentUnlocked: 18.516916616446323 + globalPercentUnlocked: 11.081223315450147 + tiered: + COLLECTORS_EDITION: + name: Collectors Edition + description: Collect %s wool from enemy teams + tiers: + - tier: 1 + points: 5 + amount: 25 + - tier: 2 + points: 10 + amount: 50 + - tier: 3 + points: 15 + amount: 100 + - tier: 4 + points: 20 + amount: 250 + total_points: 795 + total_legacy_points: 0 + blitz: + one_time: + DONKEYTAMER_MASTER: + points: 10 + name: Donkeytamer Master + description: Max out the Donkeytamer Kit + gamePercentUnlocked: 0.01 + globalPercentUnlocked: 0.01 + tiered: + KIT_COLLECTOR: + name: Kit Collector + description: Unlock %s Advanced or Ultimate kits + tiers: + - tier: 1 + points: 5 + amount: 1 + - tier: 2 + points: 10 + amount: 5 + - tier: 3 + points: 15 + amount: 10 + - tier: 4 + points: 20 + amount: 15 + total_points: 1650 + total_legacy_points: 0 + buildbattle: + one_time: + GUESSING_STREAK: + points: 5 + name: Guessing Streak + description: Guess every theme correctly in Guess the Build + gamePercentUnlocked: 5.4412406051235 + globalPercentUnlocked: 1.8679243815594853 + tiered: + BUILD_BATTLE_VOTER: + name: Judge + description: Vote on %s builds in Build Battle + tiers: + - tier: 1 + points: 5 + amount: 40 + - tier: 2 + points: 10 + amount: 200 + - tier: 3 + points: 15 + amount: 500 + - tier: 4 + points: 20 + amount: 1000 + total_points: 560 + total_legacy_points: 0 + christmas2017: + one_time: + GREED_INCARNATE: + points: 15 + name: Greed Incarnate + description: Steal 42 presents in a single game of Grinch Simulator + globalPercentUnlocked: 0.21662858123274253 + tiered: + SECRET_SANTA: + name: Secret Santa + description: Fill %s stockings in Santa Simulator + tiers: + - tier: 1 + points: 5 + amount: 5 + - tier: 2 + points: 10 + amount: 25 + - tier: 3 + points: 15 + amount: 60 + - tier: 4 + points: 20 + amount: 150 + total_points: 660 + total_legacy_points: 200 + copsandcrims: + one_time: + OH_BABY_A_TRIPLE: + points: 15 + name: A Player's Nightmare + description: Get a double kill using a grenade + gamePercentUnlocked: 0.307022864814434 + globalPercentUnlocked: 0.06307310800708539 + tiered: + CAC_BANKER: + name: Bounty Collector + description: Earn %s Coins + tiers: + - tier: 1 + points: 5 + amount: 10000 + - tier: 2 + points: 10 + amount: 50000 + - tier: 3 + points: 15 + amount: 100000 + - tier: 4 + points: 20 + amount: 250000 + total_points: 965 + total_legacy_points: 0 + duels: + one_time: + GONE_FISHING: + points: 5 + name: Gone Fishing + description: Catch a fish + gamePercentUnlocked: 0.8309436623932128 + globalPercentUnlocked: 0.27000946479595545 + tiered: + DUELS_DIVISION: + name: Climbing the Ranks + description: Achieve %s Title in any mode + tiers: + - tier: 1 + points: 5 + amount: 1 + - tier: 2 + points: 10 + amount: 2 + - tier: 3 + points: 15 + amount: 3 + - tier: 4 + points: 20 + amount: 4 + total_points: 1200 + total_legacy_points: 110 + easter: + one_time: + ALL_EGGS_2019: + points: 30 + name: Egghunter (2019) + description: Find all easter eggs in the Main Lobby + legacy: true + + tiered: + THROW_EGGS: + name: Egg Thrower + description: Throw %s eggs + tiers: + - tier: 1 + points: 5 + amount: 8 + - tier: 2 + points: 10 + amount: 32 + - tier: 3 + points: 15 + amount: 128 + - tier: 4 + points: 20 + amount: 512 + total_points: 430 + total_legacy_points: 40 + general: + one_time: + YOUTUBER: + points: 10 + name: EEEEKK! + description: Be in the same lobby as a YouTuber + globalPercentUnlocked: 62.84929127155385 + tiered: + CHALLENGER: + name: Challenger + description: Complete a total of %s challenges + tiers: + - tier: 1 + points: 5 + amount: 10 + - tier: 2 + points: 10 + amount: 50 + - tier: 3 + points: 15 + amount: 100 + - tier: 4 + points: 20 + amount: 250 + total_points: 410 + total_legacy_points: 0 + gingerbread: + one_time: + IS_THIS_SURVIVAL_GAMES: + points: 5 + name: Is this Survival Games? + description: Hit 5 players with the "Notched Sword" in 1 race + gamePercentUnlocked: 1.1200450672852627 + globalPercentUnlocked: 0.12229878588538734 + tiered: + WINNER: + name: Medalist + description: Get %s trophies + tiers: + - tier: 1 + points: 5 + amount: 5 + - tier: 2 + points: 10 + amount: 25 + - tier: 3 + points: 15 + amount: 100 + - tier: 4 + points: 20 + amount: 250 + total_points: 600 + total_legacy_points: 0 + halloween2017: + one_time: + FIRE_FROM_HELL: + points: 5 + name: Fire from Hell + description: Win a game of Smash Heroes using Skullfire + globalPercentUnlocked: 0.05622079370421381 + tiered: + PUMPKINATOR: + name: Pumpkinator Collector + description: Collect %s pumpkins in Bedwars + tiers: + - tier: 1 + points: 5 + amount: 5 + - tier: 2 + points: 10 + amount: 25 + - tier: 3 + points: 15 + amount: 100 + - tier: 4 + points: 20 + amount: 250 + total_points: 710 + total_legacy_points: 130 + housing: + one_time: + RECIEVE_COOKIE: + points: 5 + name: Filling the Cookie Jar + description: Receive a cookie. + gamePercentUnlocked: 23.130059864883275 + globalPercentUnlocked: 4.2513101294999025 + tiered: [] + total_points: 55 + total_legacy_points: 0 + murdermystery: + one_time: + BLESSING_AND_CURSE: + points: 5 + name: Mixed Messages + description: Receive a blessing and a curse from Kali in the same game on Ancient Tomb + gamePercentUnlocked: 13.157039514340763 + globalPercentUnlocked: 4.265014758105646 + tiered: + WINS_AS_SURVIVOR: + name: Peace Is Mine + description: Win %s games as innocent or detective without dying + tiers: + - tier: 1 + points: 5 + amount: 1 + - tier: 2 + points: 10 + amount: 10 + - tier: 3 + points: 15 + amount: 25 + - tier: 4 + points: 20 + amount: 40 + total_points: 805 + total_legacy_points: 0 + paintball: + one_time: + ACTIVATE_KILLSTREAKS: + points: 10 + name: Unstoppable + description: Activate ten killstreaks + gamePercentUnlocked: 1.0260724023328596 + globalPercentUnlocked: 0.2519742678216734 + tiered: + WINS: + name: Paintball Superstar + description: Win %s games + tiers: + - tier: 1 + points: 5 + amount: 10 + - tier: 2 + points: 10 + amount: 50 + - tier: 3 + points: 15 + amount: 100 + - tier: 4 + points: 20 + amount: 1000 + total_points: 685 + total_legacy_points: 0 + pit: + one_time: + PUNCH_SWORD: + points: 5 + name: The Punch + description: Hit a player with The Punch + gamePercentUnlocked: 0.3629933575223368 + globalPercentUnlocked: 0.013510194923890408 + tiered: + MYSTICISM: + name: Mysticism + description: Enchant %s items + tiers: + - tier: 1 + points: 5 + amount: 10 + - tier: 2 + points: 10 + amount: 50 + - tier: 3 + points: 15 + amount: 100 + - tier: 4 + points: 20 + amount: 250 + total_points: 1080 + total_legacy_points: 0 + quake: + one_time: + SHOW_ME_THE_MONEY: + points: 15 + name: Show me the money! + description: Unlock the Polished Bling Case or the 1.0s trigger + gamePercentUnlocked: 0.5984048114967335 + globalPercentUnlocked: 0.10115854193121432 + tiered: + COINS: + name: Quake Banker + description: Earn %s coins + tiers: + - tier: 1 + points: 5 + amount: 5000 + - tier: 2 + points: 10 + amount: 25000 + - tier: 3 + points: 15 + amount: 100000 + - tier: 4 + points: 20 + amount: 200000 + total_points: 940 + total_legacy_points: 0 + skyblock: + one_time: + EXPLOSIVE_ENDING: + points: 5 + name: Explosive Ending + description: Survive the Blast from the Unstable Dragon + gamePercentUnlocked: 3.273060341189789 + globalPercentUnlocked: 1.0396722484452376 + tiered: + ANGLER: + name: Angler + description: Achieve fishing level %s + tiers: + - tier: 1 + points: 5 + amount: 5 + - tier: 2 + points: 5 + amount: 10 + - tier: 3 + points: 10 + amount: 15 + - tier: 4 + points: 10 + amount: 20 + total_points: 1700 + total_legacy_points: 0 + skyclash: + one_time: + WHATS_NEXT: + points: 10 + name: What's next? + description: Max out a Card + legacy: true + tiered: + CARDS_UNLOCKED: + name: Collector! + description: Unlock %s different Cards + legacy: true + tiers: + - tier: 1 + points: 5 + amount: 15 + - tier: 2 + points: 10 + amount: 25 + - tier: 3 + points: 15 + amount: 35 + total_points: 0 + total_legacy_points: 715 + skywars: + one_time: + PEACEMAKER: + points: 10 + name: Peacemaker + description: Win a game without killing anyone + gamePercentUnlocked: 35.91945665528181 + globalPercentUnlocked: 23.00161061791731 + tiered: + KILLS_TEAM: + name: Team Killer + description: Kill %s players in Team mode + tiers: + - tier: 1 + points: 5 + amount: 50 + - tier: 2 + points: 10 + amount: 250 + - tier: 3 + points: 15 + amount: 1000 + - tier: 4 + points: 20 + amount: 5000 + total_points: 1555 + total_legacy_points: 0 + speeduhc: + one_time: + tiered: + SALTY: + name: Salty + description: Collect %s Salt + legacy: true + tiers: + - tier: 1 + points: 5 + amount: 200 + - tier: 2 + points: 10 + amount: 1000 + - tier: 3 + points: 15 + amount: 5000 + - tier: 4 + points: 20 + amount: 10000 + total_points: 485 + total_legacy_points: 90 + summer: + one_time: + HOME_RUN: + points: 5 + name: Home Run + description: Knock a player into the void while using the Baseball Player Kit in SkyWars + globalPercentUnlocked: 0.438836819941684 + tiered: + GONE_FISHING: + name: Gone Fishing + description: Fish %s treasure items while fishing in the Main Lobby + tiers: + - tier: 1 + points: 5 + amount: 10 + - tier: 2 + points: 15 + amount: 50 + - tier: 3 + points: 25 + amount: 100 + total_points: 365 + total_legacy_points: 20 + supersmash: + one_time: + GENCLUCK_CHALLENGE: + points: 5 + name: General Cluck Challenge + description: Kill 2 enemy heroes with your Chicken Army + gamePercentUnlocked: 5.009991257649556 + globalPercentUnlocked: 0.5199804765015701 + tiered: + SMASH_CHAMPION: + name: Smash Champion + description: Reach Smash Level %s + tiers: + - tier: 1 + points: 5 + amount: 20 + - tier: 2 + points: 10 + amount: 100 + - tier: 3 + points: 15 + amount: 250 + - tier: 4 + points: 20 + amount: 500 + total_points: 430 + total_legacy_points: 0 + tntgames: + one_time: + TNT_TAG_DIFFERENTTAGS: + points: 10 + name: One for you and for you and for you ... + description: Tag 5 different people in a game of TNT Tag + gamePercentUnlocked: 22.24612356942583 + globalPercentUnlocked: 10.263423465717924 + tiered: + PVP_RUN_WINS: + name: Running Killer + description: Win %s games of PVP Run + tiers: + - tier: 1 + points: 5 + amount: 10 + - tier: 2 + points: 10 + amount: 20 + - tier: 3 + points: 15 + amount: 50 + - tier: 4 + points: 20 + amount: 100 + total_points: 1680 + total_legacy_points: 0 + truecombat: + one_time: + GOLD_FORAGER: + points: 15 + name: Gold Forager + description: Max out a Gold Dust perk + legacy: true + tiered: + SOLO_KILLER: + name: Crazy Killer + description: Kill %s players in Solo Normal or Lucky modes + legacy: true + tiers: + - tier: 1 + points: 5 + amount: 50 + - tier: 2 + points: 10 + amount: 200 + - tier: 3 + points: 15 + amount: 500 + - tier: 4 + points: 20 + amount: 1000 + total_points: 0 + total_legacy_points: 785 + uhc: + one_time: + CRAFTING_REVOLUTION: + points: 5 + name: Crafting revolution + description: Use a custom recipe in game + gamePercentUnlocked: 37.00093709225066 + globalPercentUnlocked: 3.9130367665843684 + tiered: + HUNTER: + name: Hunter + description: Kill %s players + tiers: + - tier: 1 + points: 5 + amount: 10 + - tier: 2 + points: 10 + amount: 100 + - tier: 3 + points: 15 + amount: 500 + - tier: 4 + points: 20 + amount: 1000 + total_points: 855 + total_legacy_points: 0 + vampirez: + one_time: + PURCHASE_BLOOD: + points: 5 + name: Cash4Blood + description: Purchase Blood from the shop + gamePercentUnlocked: 24.465217949718827 + globalPercentUnlocked: 5.723903700414698 + tiered: + ZOMBIE_KILLER: + name: Zombie Hunter + description: Kill %s Zombies + tiers: + - tier: 1 + points: 5 + amount: 250 + - tier: 2 + points: 10 + amount: 500 + - tier: 3 + points: 15 + amount: 2500 + - tier: 4 + points: 20 + amount: 7500 + total_points: 610 + total_legacy_points: 0 + walls: + one_time: + FIRST_KIT: + points: 5 + name: Getting Ready + description: Unlock your first starter kit + gamePercentUnlocked: 13.703430301410933 + globalPercentUnlocked: 1.4262594353363067 + tiered: + DIAMOND_MINER: + name: Rare Ore Miner + description: Mine %s Diamonds + tiers: + - tier: 1 + points: 5 + amount: 5 + - tier: 2 + points: 10 + amount: 20 + - tier: 3 + points: 15 + amount: 50 + - tier: 4 + points: 20 + amount: 100 + total_points: 520 + total_legacy_points: 0 + walls3: + one_time: + WHATS_THE_BIG_IDEA: + points: 10 + name: What's the big idea!? + description: Final kill an enemy after splashing them with a regen potion as Phoenix, before the potion expires + gamePercentUnlocked: 0.036183601274772714 + globalPercentUnlocked: 0.01 + tiered: + COINS: + name: Mega Walls Banker + description: Earn %s coins in Mega Walls + tiers: + - tier: 1 + points: 5 + amount: 5000 + - tier: 2 + points: 10 + amount: 10000 + - tier: 3 + points: 15 + amount: 35000 + - tier: 4 + points: 20 + amount: 55000 + total_points: 2150 + total_legacy_points: 0 + warlords: + one_time: + MEDIUM_RARE: + points: 5 + name: Medium Rare + description: Receive a Rare weapon from The Weaponsmith. + gamePercentUnlocked: 50.02137436405603 + globalPercentUnlocked: 3.902172048119626 + tiered: + ASSIST: + name: Quit Stealing My Kills! + description: Earn %s assists in any game mode + tiers: + - tier: 1 + points: 5 + amount: 20 + - tier: 2 + points: 10 + amount: 100 + - tier: 3 + points: 15 + amount: 500 + - tier: 4 + points: 20 + amount: 2500 + total_points: 1380 + total_legacy_points: 0 + /resources/challenges: + get: + tags: + - metadata + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/resources.md + summary: Retrieve a list of Hypixel network challenges. + description: | + _Does not require an API key._ + #### Usage + ```typescript + const challenges = await client.resources.challenges(); + ``` + security: [] + responses: + '200': + description: An object describing all the challenges on the network. + content: + application/json: + schema: + $ref: "#/components/schemas/ChallengesResourceResponse" + example: + success: true + lastUpdated: 1604706817953 + challenges: + arcade: + - id: ARCADE__farm_hunt_challenge + name: Farm Hunt Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + arena: + - id: ARENA__where_is_it_challenge + name: WHERE IS IT Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + bedwars: + - id: BEDWARS__defensive + name: Defensive + rewards: + - type: MultipliedExperienceReward + amount: 3360 + hungergames: + - id: SURVIVAL_GAMES__star_challenge + name: Star Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + buildbattle: + - id: BUILD_BATTLE__top_3_challenge + name: Top 3 Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + truecombat: + - id: TRUE_COMBAT__rampage_challenge + name: Rampage Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + duels: + - id: DUELS__feed_the_void_challenge + name: Feed The Void Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + mcgo: + - id: MCGO__pistol_challenge + name: Pistol Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + murdermystery: + - id: MURDER_MYSTERY__murder_spree + name: Murder Spree + rewards: + - type: MultipliedExperienceReward + amount: 3360 + paintball: + - id: PAINTBALL__kill_streak_challenge + name: Kill Streak Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + quake: + - id: QUAKECRAFT__powerup_challenge + name: Powerup Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + skyclash: + - id: SKYCLASH__enderchest_challenge + name: Enderchest Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + skywars: + - id: SKYWARS__feeding_the_void_challenge + name: Feeding the Void Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + supersmash: + - id: SUPER_SMASH__leaderboard_challenge + name: Leaderboard Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + speeduhc: + - id: SPEED_UHC__alchemist_challenge + name: Alchemist Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + gingerbread: + - id: GINGERBREAD__coin_challenge + name: Coin Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + tntgames: + - id: TNTGAMES__tnt_run_challenge + name: TNT Run Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + uhc: + - id: UHC__longshot_challenge + name: Longshot Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + vampirez: + - id: VAMPIREZ__fang_challenge + name: Fang Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + walls3: + - id: WALLS3__wither_challenge + name: Wither Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + walls: + - id: WALLS__first_blood_challenge + name: First Blood Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + battleground: + - id: BATTLEGROUND__support_challenge + name: Support Challenge + rewards: + - type: MultipliedExperienceReward + amount: 3360 + /resources/quests: + get: + tags: + - metadata + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/resources.md + summary: Retrieve a list of Hypixel network quests. + description: | + _Does not require an API key._ + #### Usage + ```typescript + const quests = await client.resources.quests(); + ``` + security: [] + responses: + '200': + description: An object describing all the quests on the network. + content: + application/json: + schema: + $ref: "#/components/schemas/QuestsResourceResponse" + example: + success: true + lastUpdated: 1604706817952 + quests: + quake: + - id: quake_daily_play + name: 'Daily Quest: Quake Player' + rewards: + - type: MultipliedExperienceReward + amount: 3000 + - type: MultipliedCoinReward + amount: 1750 + objectives: + - id: quake_daily_play + type: IntegerObjective + integer: 3 + requirements: + - type: DailyResetQuestRequirement + description: Play 3 games of Quakecraft + walls: + - id: walls_daily_play + name: 'Daily Quest: Waller' + rewards: + - type: MultipliedExperienceReward + amount: 3500 + - type: MultipliedCoinReward + amount: 1500 + objectives: + - id: walls_daily_play + type: IntegerObjective + integer: 1 + requirements: + - type: DailyResetQuestRequirement + description: Play a game of Walls + paintball: + - id: paintballer + name: 'Daily Quest: Paintballer' + rewards: + - type: MultipliedExperienceReward + amount: 3500 + - type: MultipliedCoinReward + amount: 3000 + objectives: + - id: win + type: IntegerObjective + integer: 1 + requirements: + - type: DailyResetQuestRequirement + description: Win a game of Paintball + hungergames: + - id: blitz_game_of_the_day + name: 'Daily Quest: Game of the Day' + rewards: + - type: MultipliedExperienceReward + amount: 3250 + - type: MultipliedCoinReward + amount: 2500 + objectives: + - id: blitz_games_played + type: BooleanObjective + requirements: + - type: DailyResetQuestRequirement + description: Play a game of Blitz + tntgames: + - id: tnt_daily_win + name: 'Daily Quest: TNT Winner' + rewards: + - type: MultipliedExperienceReward + amount: 2500 + - type: MultipliedCoinReward + amount: 2000 + objectives: + - id: tnt_daily_win + type: IntegerObjective + integer: 1 + requirements: + - type: DailyResetQuestRequirement + description: Win a game of TNT Games + + vampirez: + - id: vampirez_daily_play + name: 'Daily Quest: VampireZ' + rewards: + - type: MultipliedExperienceReward + amount: 3000 + - type: MultipliedCoinReward + amount: 1000 + objectives: + - id: vampirez_daily_play + type: IntegerObjective + integer: 1 + requirements: + - type: DailyResetQuestRequirement + description: Play a game of VampireZ + walls3: + - id: mega_walls_play + name: 'Daily Quest: Game of the Day' + rewards: + - type: MultipliedExperienceReward + amount: 3500 + - type: MultipliedCoinReward + amount: 1500 + objectives: + - id: mega_walls_play + type: IntegerObjective + integer: 1 + requirements: + - type: DailyResetQuestRequirement + description: Play a game of Mega Walls + arcade: + - id: arcade_gamer + name: 'Daily Quest: Arcade Gamer' + rewards: + - type: MultipliedExperienceReward + amount: 3250 + - type: MultipliedCoinReward + amount: 5000 + objectives: + - id: play + type: IntegerObjective + integer: 3 + requirements: + - type: DailyResetQuestRequirement + description: Play 3 Arcade Games + arena: + - id: arena_daily_play + name: 'Daily Quest: Play Arena' + rewards: + - type: MultipliedExperienceReward + amount: 3250 + - type: MultipliedCoinReward + amount: 1250 + - type: ArenaMagicKeyReward + amount: 1 + objectives: + - id: arena_daily_play + type: IntegerObjective + integer: 5 + requirements: + - type: DailyResetQuestRequirement + description: Play 5 games + uhc: + - id: uhc_team + name: 'Daily Quest: Team UHC Champions' + rewards: + - type: MultipliedExperienceReward + amount: 3500 + - type: MultipliedCoinReward + amount: 1500 + objectives: + - id: uhc_kills + type: IntegerObjective + integer: 1 + requirements: + - type: DailyResetQuestRequirement + description: Kill 1 player in Team UHC Champions + mcgo: + - id: cvc_win_daily_normal + name: 'Daily Quest: Win a game! (Defusal)' + rewards: + - type: MultipliedExperienceReward + amount: 3500 + - type: MultipliedCoinReward + amount: 1250 + objectives: + - id: cvc_play_daily_normal + type: IntegerObjective + integer: 1 + requirements: + - type: DailyResetQuestRequirement + description: Win a game of Defusal Cops and Crims + battleground: + - id: warlords_ctf + name: 'Daily Quest: Capture the Flag' + rewards: + - type: MultipliedExperienceReward + amount: 4200 + - type: MultipliedCoinReward + amount: 3000 + - type: WarlordsBrokenWeaponReward + amount: 3 + objectives: + - id: warlords_daily_ctf + type: BooleanObjective + requirements: + - type: DailyResetQuestRequirement + description: | + Complete 1 match with at least 10 kills + or assists in Capture the Flag. + supersmash: + - id: supersmash_solo_win + name: 'Daily Quest: Smash Heroes Solo Win' + rewards: + - type: MultipliedExperienceReward + amount: 3000 + - type: MultipliedCoinReward + amount: 1500 + objectives: + - id: supersmash_solo_win + type: IntegerObjective + integer: 1 + requirements: + - type: DailyResetQuestRequirement + description: Win a game in Solo Mode + gingerbread: + - id: gingerbread_bling_bling + name: 'Daily Quest: Bling Bling' + rewards: + - type: MultipliedExperienceReward + amount: 4200 + - type: MultipliedCoinReward + amount: 1337 + objectives: + - id: gingerbread_gold_pickedup + type: IntegerObjective + integer: 50 + requirements: + - type: DailyResetQuestRequirement + description: Grab 50 coin pickups + skywars: + - id: skywars_solo_win + name: 'Daily Quest: Skywars Solo Win' + rewards: + - type: MultipliedExperienceReward + amount: 3000 + - type: MultipliedCoinReward + amount: 1500 + - type: SkyWarsSoulReward + amount: 1 + objectives: + - id: skywars_solo_win + type: IntegerObjective + integer: 1 + requirements: + - type: DailyResetQuestRequirement + description: Win a game in Solo Mode + truecombat: + - id: crazy_walls_daily_play + name: 'Daily Quest: Crazy Games' + rewards: + - type: MultipliedExperienceReward + amount: 3250 + - type: MultipliedCoinReward + amount: 1500 + - type: CrazyWallsSkullReward + amount: 1 + objectives: + - id: crazy_walls_daily_play + type: IntegerObjective + integer: 2 + requirements: + - type: DailyResetQuestRequirement + description: Play 2 games of Crazy Walls with at least 1 kill + skyclash: + - id: skyclash_play_games + name: 'Daily Quest: SkyClash Playtime' + rewards: + - type: MultipliedExperienceReward + amount: 3000 + - type: CoinReward + amount: 1500 + - type: SkyClashCardPackReward + amount: 1 + objectives: + - id: play + type: IntegerObjective + integer: 5 + requirements: + - type: DailyResetQuestRequirement + description: Play 5 games of SkyClash + prototype: + - id: prototype_pit_daily_kills + name: 'Daily Quest: Hunter' + rewards: + - type: MultipliedExperienceReward + amount: 2000 + - type: PitGold + amount: 1000 + objectives: + - id: kill + type: IntegerObjective + integer: 25 + requirements: + - type: DailyResetQuestRequirement + description: Kill 25 Players + bedwars: + - id: bedwars_daily_win + name: 'Daily Quest: First Win of the Day' + rewards: + - type: MultipliedExperienceReward + amount: 3500 + - type: BedwarsExpReward + amount: 250 + objectives: + - id: bedwars_daily_win + type: IntegerObjective + integer: 1 + requirements: + - type: DailyResetQuestRequirement + description: Win a game of Bed Wars + murdermystery: + - id: mm_daily_win + name: 'Daily Quest: Winner' + rewards: + - type: MultipliedExperienceReward + amount: 3000 + - type: MultipliedCoinReward + amount: 1500 + objectives: + - id: mm_daily_win + type: IntegerObjective + integer: 1 + requirements: + - type: DailyResetQuestRequirement + description: Win a game in any mode + buildbattle: + - id: build_battle_player + name: 'Daily Quest: Build Battle Player' + rewards: + - type: MultipliedExperienceReward + amount: 3500 + - type: MultipliedCoinReward + amount: 5000 + objectives: + - id: play + type: IntegerObjective + integer: 3 + requirements: + - type: DailyResetQuestRequirement + description: Play 3 games of Build Battle + duels: + - id: duels_player + name: 'Daily Quest: Duels Player' + rewards: + - type: MultipliedExperienceReward + amount: 3000 + - type: MultipliedCoinReward + amount: 250 + objectives: + - id: play + type: IntegerObjective + integer: 5 + requirements: + - type: DailyResetQuestRequirement + description: Play 5 games of Duels + /resources/guilds/achievements: + get: + tags: + - guild + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/resources.md + summary: Retrieve a list of achievements a Hypixel guild can accomplish. + description: | + _Does not require an API key._ + #### Usage + ```typescript + const achievements = await client.resources.guilds.achievements(); + ``` + security: [] + responses: + '200': + description: An object describing achievements guilds can obtain. + content: + application/json: + schema: + $ref: "#/components/schemas/GuildsAchievementsResourceResponse" + example: + success: true + lastUpdated: 1570754198669 + one_time: [] + tiered: + PRESTIGE: + name: Prestige + description: Reach Guild level %s + tiers: + - tier: 1 + amount: 20 + - tier: 2 + amount: 40 + - tier: 3 + amount: 60 + - tier: 4 + amount: 80 + EXPERIENCE_KINGS: + name: Experience Kings + description: get %s Guild Exp in one day + tiers: + - tier: 1 + amount: 50000 + - tier: 2 + amount: 100000 + - tier: 3 + amount: 150000 + - tier: 4 + amount: 200000 + WINNERS: + name: Winners + description: Win %s games as a Guild in a day + tiers: + - tier: 1 + amount: 100 + - tier: 2 + amount: 200 + - tier: 3 + amount: 300 + - tier: 4 + amount: 400 + ONLINE_PLAYERS: + name: What are you doing here? + description: Have %s guild members online at the same time! + tiers: + - tier: 1 + amount: 5 + - tier: 2 + amount: 15 + - tier: 3 + amount: 30 + - tier: 4 + amount: 40 + /resources/guilds/permissions: + get: + tags: + - guild + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/resources.md + summary: Retrieve a list of permissions that a Hypixel guild master can use. + description: | + _Does not require an API key._ + #### Usage + ```typescript + const permissions = await client.resources.guilds.permissions(); + ``` + security: [] + responses: + '200': + description: An object describing all the permissions a Hypixel guild master can use. + content: + application/json: + schema: + $ref: "#/components/schemas/GuildsPermissionsResourceResponse" + example: + success: true + lastUpdated: 1570754198669 + permissions: + - en_us: + name: Modify Guild Name + description: Change the guild's name. + item: + name: name_tag + - en_us: + name: Modify Guild MOTD + description: Change the guild's message of the day. + item: + name: paper + - en_us: + name: Modify Guild Tag + description: Change the guild's tag. + item: + name: sign + - en_us: + name: Change ranks + description: Promote or demote members (up to their own rank). + item: + name: crafting_table + /resources/skyblock/collections: + get: + tags: + - skyblock + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/resources.md + summary: Retrieve a list of ingame collections. + description: | + _Does not require an API key._ + #### Usage + ```typescript + const collections = await client.resources.skyblock.collections(); + ``` + security: [] + responses: + '200': + description: Collections response for the current existing connections. + content: + application/json: + schema: + $ref: '#/components/schemas/SkyBlockCollectionsResourcesResponse' + example: + success: true + lastUpdated: 1595295719158 + version: "0.8.24" + collections: + FARMING: + name: "Farming" + items: + WHEAT: + name: "Wheat" + maxTiers: 10 + tiers: + - + tier: 1 + amountRequired: 50 + unlocks: + - "Wheat Minion Recipes" + - + tier: 2 + amountRequired: 100 + unlocks: + - "Enchanted Book (Harvesting V) Recipe" + - + tier: 3 + amountRequired: 250 + unlocks: + - "Farm Suit Helmet Recipe" + - "Farm Suit Chestplate Recipe" + - "Farm Suit Leggings Recipe" + - "Farm Suit Boots Recipe" + CARROT_ITEM: + name: "Carrot" + maxTiers: 9 + tiers: + - + tier: 1 + amountRequired: 100 + unlocks: + - "Carrot Minion Recipes" + - + tier: 2 + amountRequired: 250 + unlocks: + - "Simple Carrot Candy Recipe" + - + tier: 3 + amountRequired: 500 + unlocks: + - "Catching Egg (COMING SOON)" + FISHING: + name: "Fishing" + items: + RAW_FISH: + name: "Raw Fish" + maxTiers: 11 + tiers: + - + tier: 1 + amountRequired: 20 + unlocks: + - "Fish Hat Recipe" + - + tier: 2 + amountRequired: 50 + unlocks: + - "Fishing Minion Recipes" + - + tier: 3 + amountRequired: 100 + unlocks: + - "Small Fishing Bag Upgrade" + RAW_FISH:1: + name: "Raw Salmon" + maxTiers: 9 + tiers: + - + tier: 1 + amountRequired: 20 + unlocks: + - "Minnow Bait Recipe" + - + tier: 2 + amountRequired: 50 + unlocks: + - "Dodge Potion Recipe" + - + tier: 3 + amountRequired: 100 + unlocks: + - "Enchanted Book (Lure IV) Recipe" + /resources/skyblock/skills: + get: + tags: + - skyblock + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/resources.md + summary: Retrieve a list of ingame skills. + description: | + _Does not require an API key._ + #### Usage + ```typescript + const skills = await client.resources.skyblock.skills(); + ``` + security: [] + responses: + '200': + description: Skills response for the current existing skills. + content: + application/json: + schema: + $ref: '#/components/schemas/SkyBlockSkillsResourcesResponse' + example: + success: true + lastUpdated: 1603093084720 + version: 0.9.87 + collections: + FARMING: + name: Farming + description: Harvest crops and shear sheep to earn Farming XP! + maxLevel: 50 + levels: + - level: 1 + totalExpRequired: 50 + unlocks: + - Farmhand I 4% chance to get double crops. + - +2 HP ❤ Health + - Access to The Barn + - +25 Coins + DUNGEONEERING: + name: Dungeoneering + description: Complete dungeons to level up your Dungeoneering classes! + maxLevel: 50 + levels: + - level: 1 + totalExpRequired: 50 + unlocks: + - +25 Coins + /skyblock/auction: + get: + tags: + - skyblock + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/skyblock/auction.md + summary: Returns SkyBlock auctions by either player, profile or auction uuid. + description: | + Returns SkyBlock auctions by either player, profile or auction uuid. Only "active" auctions are returned, these are auctions that are still open or that have not had all bids/items claimed. + #### Usage + ```typescript + const auctions = await client.skyblock.auction.player("347ef6c1daac45ed9d1fa02818cf0fb6"); + ``` + parameters: + - name: player + description: Minecraft UUID of the player who's auctions you are looking up. + in: query + schema: + type: string + example: 347ef6c1daac45ed9d1fa02818cf0fb6 + - name: profile + description: Hypixel SkyBlock profile ID for the profile you are looking up auctions on. + in: query + schema: + type: string + example: 347ef6c1daac45ed9d1fa02818cf0fb6 + - name: uuid + description: Specific UUID of the auction. + in: query + schema: + type: string + example: 409a1e0f261a49849493278d6cd9305a + responses: + '200': + description: An object describing the resulting auctions. + headers: + ratelimit-limit: + $ref: '#/components/headers/ratelimit-limit' + ratelimit-remaining: + $ref: '#/components/headers/ratelimit-remaining' + ratelimit-reset: + $ref: '#/components/headers/ratelimit-reset' + content: + application/json: + schema: + $ref: '#/components/schemas/SkyBlockAuctionResponse' + example: + success: true + auctions: + - _id: 5dcdaf2244f4f4f350c02bf3 + uuid: 409a1e0f261a49849493278d6cd9305a + auctioneer: 347ef6c1daac45ed9d1fa02818cf0fb6 + profile_id: 347ef6c1daac45ed9d1fa02818cf0fb6 + coop: + - 347ef6c1daac45ed9d1fa02818cf0fb6 + start: 1573760802637 + end: 1573761102637 + item_name: Azure Bluet + item_lore: "§f§lCOMMON" + extra: Azure Bluet Red Rose + category: blocks + tier: COMMON + starting_bid: 1 + item_bytes: + type: 0 + data: H4sIAAAAAAAAAB2NQQqCQBhGv1ErHaKu0KoLtGtnarRIhTpA/OGfDIwZ4wxUF/IeHiyyto/3eBKIIJQEIDx4qsJaYJK07m6FhG+p9hEdVMV7TXU3Wh+JWaW6h6ZXhODYGg5/LeZDfxt6nZR5XhYhgoIaxmKE8dsZXu20YwuJZfa0hmJrjbo6y134f8pTll5O5TnbbgAP05Qaqhk+8AVIrd2eoAAAAA== + claimed: true + claimed_bidders: [] + highest_bid_amount: 7607533 + bids: + - auction_id: 409a1e0f261a49849493278d6cd9305a + bidder: 99748e629dee463892f68abf3a780094 + profile_id: 99748e629dee463892f68abf3a780094 + amount: 7607533 + timestamp: 1573760824844 + + '400': + description: Missing one or more fields [player,uuid,profile] + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + success: false + cause: 'Missing one or more fields [player,uuid,profile]' + '403': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/RateLimitError' + /skyblock/auctions: + get: + tags: + - skyblock + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/skyblock/auctions.md + summary: Returns SkyBlock auctions that are currently active in the in-game Auction House. + description: | + Returns SkyBlock auctions that are currently active in the in-game Auction House. This method uses pagination due to the amount of results returned. Each page will return up to 1,000 results. + #### Usage + ```typescript + const response = await client.skyblock.auctions.page(0); + ``` + security: [] + parameters: + - name: page + description: Page of results to pull. This is zero indexed and defaults to 0 if not provided + in: query + schema: + type: integer + example: 1 + responses: + '200': + description: An object describing page information and auctions on that page. + content: + application/json: + schema: + $ref: '#/components/schemas/SkyBlockAuctionsResponse' + example: + success: true + page: 0 + totalPages: 49 + totalAuctions: 49666 + lastUpdated: 1599850774688 + auctions: + - uuid: 2bdf7fdf401b43ce9fc73e6d2131425b + auctioneer: 68e9b297349044ada7a987d8002804d9 + profile_id: 68e9b297349044ada7a987d8002804d9 + coop: + - 68e9b297349044ada7a987d8002804d9 + start: 1599823951083 + end: 1599996751083 + item_name: Diamond Spreading + item_lore: | + §7This item can be used as a + §7minion upgrade. Place it in any + §7minion and it will occasionally + §7generate diamonds! + + §a§lUNCOMMON + extra: Diamond Spreading Diamond + category: misc + tier: UNCOMMON + starting_bid: 640 + item_bytes: H4sIAAAAAAAAAE2QT0/CQBDFp4BYepAY9WiyGq8VQaHiraH8aSJ/Angm0+5YNmm3pLuN8on4Hnww4xIvzm3e+2Xe5DkADbCEAwBWBSqCW7YFZ4O8lNpyoKoxaUCNZLyF01ShMRGcRikmyqw/DpxzoXYp7g31nhdkG7UOt8eDt94KxYSmjMUoWUSsVMQZKoZwb+xMSJFLVu6SAjk9skWKMRmeCclQ7v8zKPnJ+BJpyvI4RmVETNM93BgmIUkFamJcYJZLru7MBxfHAx4P6cdsMJ9O5zMbajPMCK6NHPxhbLUrCLmQCTjQHH7rAn2tCxGVmpQNjbwQiZBrTOBqsPRH63A23oyXYbBZTcLR2j4VBZdB6JvrRlssh35gEBNUlsZ58LrdT4782Y3jbsd9iXrcffV6sRtRL+q2I68T8cikaJGR0pjtoNlvtdutzhPz3jp95k8BKlAPMMOETr3/AvhzTEqmAQAA + claimed: false + claimed_bidders: + highest_bid_amount: 0 + bids: [] + - uuid: 10533b6d6d3940e4ab9c7850dba03d8f + auctioneer: 5f637954b90b40d0b9e6231346dd0d63 + profile_id: 5f637954b90b40d0b9e6231346dd0d63 + coop: + - 5f637954b90b40d0b9e6231346dd0d63 + start: 1599843526352 + end: 1599886726352 + item_name: Critical IV Splash Potion + item_lore: | + §4Critical IV §f(48:00) + §7Increases §9☣ Crit Chance §7by + §7§a25% §7and §9☠ Crit Damage §7by + §7§a40%§7. + + §a§lUNCOMMON + extra: Critical IV Splash Potion Potion + category: consumables + tier: COMMON + starting_bid: 95000 + item_bytes: H4sIAAAAAAAAAE2RzW7TQBSF78Rp/EMpSLBBYuEFlegi1InsJu6KyC0igjiRaGFZTeyxO8J/8oxR8yYskVj4Pfwm8CCIazuFLkajOeebO+feMQB0INwAADKAAQ9JReDAy6tMEgMUSWMdnnmVkHm6ySXPs8soYoEU3QUC6iLdcpZJUEC7qEraEug8JzBYhioBfZEWCY84KxVE9Pc8ZO8SGgtk/highlwUCd3pMPyYl0xDVcX1oqltr+SSBzQxl5/Npo5e2/NzyzqB46aeLbOgZFQwgYb7+/tPs2VN75ZmAUNptt3BCW5NTafOcSvQLOzRHz16QVMa36OPe9S22tJv8PUjPDV1cu1769Vq7Wsw9GnK4CXKD0N9wuDi1uyHAgY8ubyTJV1IWfJtJZlQ4LDovJuEfWMJFh4S0FjWxQyJBqPeBi3YV9VBZQ+Gq8DBv5tI99Z/WoGjcD/wGxS+4kh/YQw9zcNu3njW4NE+gtwVDEab9dWybUjPSx7z7IrGoF77H/z1FxTx6+8JAiPRdYcph1WFxqup5VLXDpyxZYV0bLtzZ+wGs8k4sJljs+gsmrtnbXt3kmVh154uecqEpGkBT93TyeR0apmT6bkzMzcrgAGM+l94ewjwF9zORniEAgAA + claimed: false + claimed_bidders: + highest_bid_amount: 0 + bin: true + bids: [] + - uuid: a775cedadb8a4e66bde8bce99603ba94 + auctioneer: e1c3c507ade747e983069ae22c6e6739 + profile_id: e1c3c507ade747e983069ae22c6e6739 + coop: + - e1c3c507ade747e983069ae22c6e6739 + start: 1599841050648 + end: 1600201050648 + item_name: Hunk of Blue Ice + item_lore: §9§lRARE + extra: Hunk of Blue Ice Skull Item + category: misc + tier: RARE + starting_bid: 3100000 + item_bytes: H4sIAAAAAAAAAE2RzZKaQBSFrzqTIFWpLLLLysVsreJHGFlk4ShKE+nJIP7Qm6kWGkEbtKBJJO+Q55gXyBPMg6XCZJXlPfecOvXVkQH60MlkAOh0oZvFnV8duJ2e60J8lqEn6KEHfSeL2ZzTQ9W6/sggr041548/ClZK0EUx3Cn3SmJq5nioW9QY6pGqDfeqZg11w4jGiWkm0Zi2uW/l+cJKkbGqD5JgV1GXrPpXLcHthvKawW/WuArZpUq8c3nUILO9g5XCH9Hxco+KTbOfIhPl7d+ZmMvG+s9rCLo1eKi7KSme6n2+UZa6z5njq1G+/o6388ybcU4CWyEBTvHWz3FwMkKNpHjxdMW5p4baekRmExUvXE6OBwUfT6oXeI23CHXvOE/DwE/xT3vkbcMRWSCVrFwr2SlfWgIZ3sdZdeG06cPN8lwy6Q0L5NcX6/WF+xPfluAG05zBp1Zy6uI0OCeDhxZ5gCLWxj/aV1HSiRBltq8Fq6S3MeDDw3JtP6Op/eys8VeALryb0ZweGPQA/gKo3xTCvAEAAA== + claimed: false + claimed_bidders: + highest_bid_amount: 0 + bin: true + bids: [] + - uuid: 703edd6c44714602a0e6d2e9b241a73d + auctioneer: 57170253bb4541f480bdefd557e0c147 + profile_id: 57170253bb4541f480bdefd557e0c147 + coop: + - 5f5ca9ab03a6406dbdd1a95ada1d6d02 + - 57170253bb4541f480bdefd557e0c147 + start: 1599844820969 + end: 1599866420969 + item_name: Zombie's Heart + item_lore: | + §7Health: §a+50 HP + + §6Item Ability: Healing Boost + §7Doubles all healing effects, + §7including your natural + §7regeneration and healing you + §7deal to others, while wearing. + + §7§8This item can be reforged! + §9§lRARE HELMET + extra: Zombie's Heart Skull Item + category: armor + tier: RARE + starting_bid: 240000 + item_bytes: H4sIAAAAAAAAAE2S227aQBCGB5K0gKoepN70pt1IkXrR0BjjA46UC8IhmGITiEuCb6K1vdhL1jay103IO/Q5eIE+AQ9WdUFV1cuZ/5vZf2anBlCFEq0BQKkMZRqUfpbgqJMWCS/V4IDj8ACqAxqQPsNhLqjfNajdPBSMjR8TklWgbAZwYugtxfNkuR6o6qLe9HS97i20Vl1VFF9u6V5D9pui7jpLVyTjlORVqHDyxIuM5PunK3A0w6wg8Iush5J7F0nB3ZD5a1MTsXMjsbG5XOlmMlt7HVMzY6EP2tpobfzHqhzfqmzeHEZuMim8eCaNmlNGBtOGH3//YT/3H2zZUizHjefP0dJeWrLbDWLbuYzGjh1ZV8PIlvuRe+vGVtddjh03sp35k72cNFyHsfmyT93b+fPY6cm2M1vajvVkJg1jMbm4EBPU4GVA8xXD6yocjtKMVPbJ99uNPiCY8egcbTf4iyqhwbVQPm43mslJjNoeZZSvz9GOokmILtM05/BJ1HXTwmMkR5gxFP1VyWJBfJ6fwgcB0MRnRbBLr9MiQwkW+8RsX5uRkIjvwZymCcJJ8K+BIOFYAIGIEU9RyiOS5afoMaKMoEeCM0F9FQ6FXX27aTkRzRHdOfVxgjyCMrJIs5AEx/BuuzG2GzZtT3to0BtZPacChzaOyV5x09ij5HO+GyzjYhVvek88w23OM+oVnOQVqKYZDWni4BBeT76bnW/3nWm775j2VWV3ifDKHVuXZu9+0GtPd72LQiRPAsUjiqordbww/LqC9Vbd0IzG7upUrdGSiCZj0ZvTmOQcxyt4a5w1pDNZQg3pXGmitgVQhhddHOOQwAHAH6LiqFwDAwAA + claimed: false + claimed_bidders: + highest_bid_amount: 0 + bids: [] + /skyblock/auctions_ended: + get: + tags: + - skyblock + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/skyblock/auctions_ended.md + summary: Returns SkyBlock auctions which ended in the last 60 seconds (More precisely, whatever time is defined in the "Cache-Control" header of the response). + description: | + Returns SkyBlock auctions which ended in the last 60 seconds (More precisely, whatever time is defined in the "Cache-Control" header of the response). + #### Usage + ```typescript + const response = await client.skyblock.auctions_ended(); + ``` + security: [] + responses: + '200': + description: An object describing the ended auctions. + content: + application/json: + schema: + $ref: '#/components/schemas/SkyBlockAuctionsEndedResponse' + example: + success: true + lastUpdated: 1607456463916 + auctions: + - auction_id: 015fe0c67e6041e69797bbe0c2725a21 + seller: fc76242bf64a4698ae0ebc136d900929 + seller_profile: 85b96cd3e73e4580b8379162ec059141 + buyer: c1eff55de0d24ec6b44848799e9323ba + timestamp: 1607456400329 + price: 190000 + bin: true + item_bytes: H4sIAAAAAAAAAEWR3W7TQBCFx2mBxKgtSH2ArUACZKL6L9jtndUYBdHQyGlV7qq1PXZX9U+03kB6yYNw7ffwo/AgiHEC4m7mmz1nz87qACPQhA4A2gAGItUGGjy5qNeV0nTYUzzX4PlNFUvkDzwuUNuD0Uyk+LHgeUOi3zo8S0WzKvjjCPYva4lDoofwsmu9KS95juesaxPDN+GY0FJJrHJ1v4PWxKTDAfGQy4rQB8M2WVKLqqHGy2RdsrKuGoWSPYiiaNjbS/yGBQ3RMo3+TF0Vj+/I5NXWj+2u7Acr0hCbmGbfbdWgd60/5xtmOBM4JPq5p9sofY43W4tfP3+wfyn/++Bfn+91nYJBxS0VlLQoMFGCIvYu6FnvXcenindtMQ++htMT8u11dPH1vWiYUFiyhFcsRiYxq2WO6Qm86NozUkRBFLLl7VU0HcL+F14iHNAg4rRuyYINgg5H4UZJHiglRbxW2AxhVEuRi+qa53CwnF0t7hY30cUsWIbD/jdBj4JP0zC6ozBkul4Teu34Tua7vj124tQduz73xtxOvbGVoZtMbN/xnIyMlSixUbxcwZFln/qn9DX2ue2wxRxgAE93q6b3wR9BYJa/RAIAAA== + /skyblock/bazaar: + get: + tags: + - skyblock + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/skyblock/bazaar.md + summary: Returns the list of products along with their sell summary, buy summary and quick status. + description: | + Returns the list of [products](https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/skyblock/bazaar.md#product-description) along with their sell summary, buy summary and quick status. + #### Usage + ```typescript + const products = await client.skyblock.bazaar(); + ``` + security: [] + responses: + '200': + description: An object describing the current bazaar products. + content: + application/json: + schema: + $ref: '#/components/schemas/SkyBlockBazaarResponse' + example: + sucess: true + lastUpdated: 1604910124671 + products: + BROWN_MUSHROOM: + product_id: BROWN_MUSHROOM + sell_summary: + - amount: 3011 + pricePerUnit: 8.4 + orders: 1 + - amount: 8972 + pricePerUnit: 8.2 + orders: 1 + - amount: 47983 + pricePerUnit: 8.1 + orders: 1 + - amount: 3049 + pricePerUnit: 8 + orders: 1 + buy_summary: + - amount: 960 + pricePerUnit: 15 + orders: 1 + - amount: 1080 + pricePerUnit: 15.1 + orders: 1 + - amount: 640 + pricePerUnit: 15.2 + orders: 1 + - amount: 640 + pricePerUnit: 15.3 + orders: 1 + quick_status: + productId: BROWN_MUSHROOM + sellPrice: 8.251800462504129 + sellVolume: 251544 + sellMovingWeek: 11953365 + sellOrders: 22 + buyPrice: 15.704912911036473 + buyVolume: 616961 + buyMovingWeek: 7751191 + buyOrders: 292 + SPOOKY_SHARD: + product_id: SPOOKY_SHARD + sell_summary: + - amount: 64 + pricePerUnit: 12000.7 + orders: 1 + - amount: 524 + pricePerUnit: 12000.6 + orders: 1 + - amount: 112 + pricePerUnit: 12000.4 + orders: 1 + - amount: 160 + pricePerUnit: 12000.2 + orders: 1 + buy_summary: + - amount: 106 + pricePerUnit: 15999.6 + orders: 3 + - amount: 141 + pricePerUnit: 15999.7 + orders: 1 + - amount: 3 + pricePerUnit: 15999.8 + orders: 1 + - amount: 160 + pricePerUnit: 15999.9 + orders: 1 + quick_status: + productId: SPOOKY_SHARD + sellPrice: 12000.31778425656 + sellVolume: 43857 + sellMovingWeek: 106455 + sellOrders: 216 + buyPrice: 15999.657085020244 + buyVolume: 5586 + buyMovingWeek: 111647 + buyOrders: 100 + /skyblock/news: + get: + tags: + - skyblock + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/skyblock/news.md + summary: Returns SkyBlock news, including a title, description and a thread. + description: | + #### Usage + ```typescript + const news = await client.skyblock.news(); + ``` + responses: + '200': + description: A object describing news items. + headers: + ratelimit-limit: + $ref: '#/components/headers/ratelimit-limit' + ratelimit-remaining: + $ref: '#/components/headers/ratelimit-remaining' + ratelimit-reset: + $ref: '#/components/headers/ratelimit-reset' + content: + application/json: + schema: + $ref: '#/components/schemas/NewsResponse' + example: + success: true + items: + - item: + - material: EMERALD + link: 'https://hypixel.net/threads/3287083/' + text: 8th September 2020 + title: SkyBlock v0.9 + - item: + - material: WEB + link: 'https://hypixel.net/threads/3287083/' + text: 7th July 2020 + title: SkyBlock v0.8 + '400': + $ref: '#/components/responses/MissingFields' + '403': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/RateLimitError' + /skyblock/profile: + get: + tags: + - skyblock + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/skyblock/profile.md + summary: Returns an array SkyBlock profile's data, such as stats, objectives etc. + description: | + The data returned can differ depending on the players in-game API settings. + #### Usage + ```typescript + const profile = await client.skyblock.profile("20934ef9488c465180a78f861586b4cf"); + ``` + parameters: + - name: profile + description: The Hypixel SkyBlock profile ID being looked up. + required: true + in: query + schema: + type: string + example: 20934ef9488c465180a78f861586b4cf + responses: + '200': + description: An object describing the SkyBlock profile. + headers: + ratelimit-limit: + $ref: '#/components/headers/ratelimit-limit' + ratelimit-remaining: + $ref: '#/components/headers/ratelimit-remaining' + ratelimit-reset: + $ref: '#/components/headers/ratelimit-reset' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + profile: + $ref: '#/components/schemas/SkyBlockProfile' + required: + - profile + example: + success: true + profile: + profile_id: 20934ef9488c465180a78f861586b4cf + members: + 20934ef9488c465180a78f861586b4cf: + last_save: 1594895461520 + inv_armor: + type: 0 + data: H4sIAAAAAAAAAONiYOBkYMzkYmBgYGEAAQCp5xppEQAAAA== + first_join: 1589001971955 + first_join_hub: 407685 + stats: {} + objectives: + collect_log: + status: ACTIVE + progress: 0 + completed_at: 0 + tutorial: + - first_join + - zone_village + - zone_auction_house + - zone_bazaar_alley + quests: + collect_log: + status: ACTIVE + activated_at: 1589001971468 + activated_at_sb: 28726267 + completed_at: 0 + completed_at_sb: 0 + coin_purse: 5000 + last_death: 28726267 + visited_zones: + - village + - auction_house + - bazaar_alley + fairy_souls_collected: 0 + slayer_bosses: + zombie: + claimed_levels: {} + spider: + claimed_levels: {} + wolf: + claimed_levels: {} + pets: [] + dungeons: + dungeon_types: + catacombs: {} + player_classes: {} + dungeon_journal: {} + '400': + $ref: '#/components/responses/MissingFields' + '403': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/RateLimitError' + /skyblock/profiles: + get: + tags: + - skyblock + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/skyblock/profiles.md + summary: Returns an array SkyBlock profile's data, such as stats, objectives etc. + description: | + The data returned can differ depending on the players in-game API settings. The request takes a player UUID. + #### Usage + ```typescript + const profiles = await client.skyblock.profiles.uuid("20934ef9488c465180a78f861586b4cf"); + ``` + parameters: + - $ref: '#/components/parameters/PlayerUuidRequired' + responses: + '200': + description: An object describing the player's SkyBlock profiles. + headers: + ratelimit-limit: + $ref: '#/components/headers/ratelimit-limit' + ratelimit-remaining: + $ref: '#/components/headers/ratelimit-remaining' + ratelimit-reset: + $ref: '#/components/headers/ratelimit-reset' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + profiles: + type: array + nullable: true + items: + $ref: '#/components/schemas/SkyBlockProfileCuteName' + required: + - profiles + example: + success: true + profiles: + - profile_id: b59f6cd9ea734a4da2ff011808855e6b + members: + 20934ef9488c465180a78f861586b4cf: + last_save: 1601999005474 + inv_armor: + type: 0 + data: H4sIAAAAAAAAAONiYOBkYMzkYmBgYGEAAQCp5xppEQAAAA== + first_join: 1601998821831 + first_join_hub: 4313 + stats: {} + objectives: + collect_log: + status: ACTIVE + progress: 0 + completed_at: 0 + tutorial: + - first_join + - zone_village + - zone_bazaar_alley + quests: + collect_log: + status: ACTIVE + activated_at: 1601998821112 + activated_at_sb: 41723120 + completed_at: 0 + completed_at_sb: 0 + coin_purse: 3 + last_death: 41723120 + visited_zones: + - village + - bazaar_alley + fairy_souls_collected: 0 + slayer_bosses: + zombie: + claimed_levels: {} + spider: + claimed_levels: {} + wolf: + claimed_levels: {} + pets: [] + dungeons: + dungeon_types: + catacombs: {} + player_classes: {} + dungeon_journal: {} + community_upgrades: + upgrade_states: [] + cute_name: Cucumber + game_mode: ironman + - profile_id: 20934ef9488c465180a78f861586b4cf + members: + 20934ef9488c465180a78f861586b4cf: + last_save: 1594895461520 + inv_armor: + type: 0 + data: H4sIAAAAAAAAAONiYOBkYMzkYmBgYGEAAQCp5xppEQAAAA== + first_join: 1589001971955 + first_join_hub: 407685 + stats: {} + objectives: + collect_log: + status: ACTIVE + progress: 0 + completed_at: 0 + tutorial: + - first_join + - zone_village + - zone_auction_house + - zone_bazaar_alley + quests: + collect_log: + status: ACTIVE + activated_at: 1589001971468 + activated_at_sb: 28726267 + completed_at: 0 + completed_at_sb: 0 + coin_purse: 5000 + last_death: 28726267 + visited_zones: + - village + - auction_house + - bazaar_alley + fairy_souls_collected: 0 + slayer_bosses: + zombie: + claimed_levels: {} + spider: + claimed_levels: {} + wolf: + claimed_levels: {} + pets: [] + dungeons: + dungeon_types: + catacombs: {} + player_classes: {} + dungeon_journal: {} + cute_name: Orange + - profile_id: 974b2a9e0d6d41819dd18a05fb228965 + members: + 20934ef9488c465180a78f861586b4cf: + last_save: 1604963258470 + inv_armor: + type: 0 + data: H4sIAAAAAAAAAONiYOBkYMzkYmBgYGEAAQCp5xppEQAAAA== + first_join: 1589002493890 + first_join_hub: 144304 + stats: + gifts_given: 196 + highest_critical_damage: 2340569608.6801596 + kills: 1049 + kills_zombie: 44 + kills_zombie_villager: 10 + kills_ruin_wolf: 7 + objectives: + collect_log: + status: COMPLETE + progress: 1 + completed_at: 1604474169400 + tutorial: + - first_join + - zone_village + - zone_mine + - zone_danger + - zone_farm + quests: + collect_log: + status: ACTIVE + activated_at: 1589002493572 + activated_at_sb: 28726791 + completed_at: 0 + completed_at_sb: 0 + coin_purse: 1005826340.2595283 + last_death: 44660021 + crafted_generators: + - SNOW_1 + - COBBLESTONE_1 + visited_zones: + - village + - mine + fairy_souls_collected: 0 + fairy_souls: 0 + fairy_exchanges: 0 + death_count: 24 + slayer_bosses: + zombie: + claimed_levels: + level_1: true + level_2: true + xp: 1000000 + boss_kills_tier_0: 1 + boss_kills_tier_1: 1 + spider: + claimed_levels: + level_1: true + level_2: true + xp: 1000000 + boss_kills_tier_0: 1 + boss_kills_tier_1: 1 + wolf: + claimed_levels: + level_1: true + level_2: true + xp: 1000000 + pets: + - uuid: 5d83d38c-00d9-4399-84bf-17fb6de3f799 + type: BEE + exp: 25353230 + active: false + tier: LEGENDARY + heldItem: + candyUsed: 0 + skin: + dungeons: + dungeon_types: + catacombs: + experience: 1000002701.8999999 + times_played: + '0': 1 + tier_completions: + '0': 1 + fastest_time: + '0': 543283 + best_runs: + '0': + - timestamp: 1594287196439 + score_exploration: 59 + score_speed: 100 + score_skill: 57 + score_bonus: 1 + dungeon_class: tank + teammates: + - a40c9804-6f14-4174-ae25-5e77ee218a4a + - c493b6a6-8674-4efb-bac4-5bb6fe52a898 + - 824b39b5-d37f-4f81-885e-2df8593c5817 + - dde633f0-1472-4aeb-ba80-af757e07f452 + elapsed_time: 543283 + damage_dealt: 974508.131547339 + deaths: 2 + mobs_killed: 34 + secrets_found: 0 + damage_mitigated: 86091.31206308535 + ally_healing: 950.5029296875 + best_score: + '0': 217 + mobs_killed: + '0': 34 + most_mobs_killed: + '0': 34 + most_damage_tank: + '0': 974508.131547339 + most_healing: + '0': 950.5029296875 + watcher_kills: + '0': 1 + highest_tier_completed: 4 + fastest_time_s: + '1': 657225 + most_damage_archer: + '4': 208659014.67389628 + player_classes: + archer: + experience: 1110012918.555 + healer: + experience: 167 + mage: + experience: 500.4133333333333 + berserk: + experience: 291.80833333333334 + tank: + experience: 1000001564.3799999 + dungeon_journal: {} + dungeons_blah_blah: + - malik_first_talk + - gatekeeper_first_talk + selected_dungeon_class: healer + experience_skill_runecrafting: 20190.239999999998 + experience_skill_combat: 75056296.56000185 + experience_skill_mining: 500003107.6 + unlocked_coll_tiers: + - COBBLESTONE_9 + - LOG_2 + - COAL_-1 + - LOG_1 + experience_skill_alchemy: 500004100 + experience_skill_farming: 550011435.3999829 + wardrobe_equipped_slot: 1 + collection: + REDSTONE: 3310000 + BONE: 11 + ROTTEN_FLESH: 27 + ENDER_PEARL: 5246 + FEATHER: 10000 + COBBLESTONE: 110064 + WHEAT: 110 + RAW_FISH:2: 1 + LOG: 274 + PORK: 100000 + COAL: 21 + SUGAR_CANE: 10010 + STRING: 20004 + SPONGE: 2 + SEEDS: 18 + LOG:1: 84 + OBSIDIAN: 43 + LOG_2:1: 6 + wardrobe_contents: + type: 0 + data: H4sIAAAAAAAAAONiYOBkYMzkYmBg8GCgFgAArkGN1lUAAAA= + experience_skill_taming: 1043649915.0856252 + experience_skill_enchanting: 500005427.78508854 + sacks_counts: + COBBLESTONE: 0 + COAL: 0 + IRON_INGOT: 0 + GOLD_INGOT: 0 + experience_skill_fishing: 500004850 + experience_skill_foraging: 500003921.5999985 + cute_name: Banana + banking: + balance: 0 + transactions: [] + '400': + $ref: '#/components/responses/MissingFields' + '403': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/RateLimitError' + /status: + get: + tags: + - player + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/status.md + summary: Returns online status information for given player, including game, mode and map when available. + description: | + Players can disable this endpoint via in-game settings. When done so the API will return as if the player is offline. + #### Usage + ```typescript + const status = await client.status.uuid("20934ef9488c465180a78f861586b4cf"); + ``` + parameters: + - $ref: '#/components/parameters/PlayerUuidRequired' + responses: + '200': + description: An object describing the player's status. + headers: + ratelimit-limit: + $ref: '#/components/headers/ratelimit-limit' + ratelimit-remaining: + $ref: '#/components/headers/ratelimit-remaining' + ratelimit-reset: + $ref: '#/components/headers/ratelimit-reset' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + session: + $ref: '#/components/schemas/Session' + required: + - session + '400': + $ref: '#/components/responses/MissingFields' + '403': + $ref: '#/components/responses/Unauthorized' + '422': + $ref: '#/components/responses/MalformedUUID' + '429': + $ref: '#/components/responses/RateLimitError' + /watchdogstats: + get: + tags: + - watchdog + externalDocs: + url: https://github.com/HypixelDev/PublicAPI/blob/master/Documentation/methods/watchdogstats.md + summary: Returns some statistics about Watchdog & bans. + description: | + #### Usage + ```typescript + const stats = await client.watchdogstats(); + ``` + responses: + '200': + description: An object describing the current watchdog stats. + headers: + ratelimit-limit: + $ref: '#/components/headers/ratelimit-limit' + ratelimit-remaining: + $ref: '#/components/headers/ratelimit-remaining' + ratelimit-reset: + $ref: '#/components/headers/ratelimit-reset' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + watchdog_lastMinute: + type: integer + example: 5 + description: Watchdog's bans in the last minute. + staff_rollingDaily: + type: integer + example: 1356 + description: Staff bans in the last day. + watchdog_total: + type: integer + example: 4924740 + description: Total Watchdog bans, ever. + watchdog_rollingDaily: + type: integer + example: 7679 + description: Watchdog bans in the last day. + staff_total: + type: integer + example: 1608360 + description: Total staff bans, ever. + required: + - watchdog_lastMinute + - staff_rollingDaily + - watchdog_total + - watchdog_rollingDaily + - staff_total + '400': + $ref: '#/components/responses/MissingFields' + '403': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/RateLimitError' +components: + headers: + ratelimit-limit: + schema: + type: integer + description: Request limit per minute. + ratelimit-remaining: + schema: + type: integer + description: The number of requests left for the time window. + ratelimit-reset: + schema: + type: integer + description: The amount of seconds left until the ratelimit resets. + parameters: + PlayerUuid: + name: uuid + description: Minecraft UUID of the player. + in: query + schema: + type: string + example: 20934ef9488c465180a78f861586b4cf + PlayerUuidRequired: + name: uuid + description: Minecraft UUID of the player. + required: true + in: query + schema: + type: string + example: 20934ef9488c465180a78f861586b4cf + byUuid: + name: byUuid + required: false + description: Minecraft UUID of the player. + in: query + schema: + type: string + example: 20934ef9488c465180a78f861586b4cf + byGuildName: + name: byName + required: false + description: Hypixel guild name. + in: query + schema: + type: string + example: Mini Squid + responses: + MissingFields: + description: Missing one or more fields + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + success: false + cause: 'Missing one or more fields [key]' + RateLimitError: + description: Hit key throttle. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + success: false + cause: Hit key throttle + Unauthorized: + description: Invalid API key + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + success: false + cause: Invalid API key + MalformedUUID: + description: Malformed UUID + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + success: false + cause: Malformed UUID + schemas: + ApiSuccess: + type: object + properties: + success: + type: boolean + description: Whether or not the request succeeded. + default: true + required: + - success + ApiError: + type: object + properties: + success: + type: boolean + description: Whether or not the request succeeded. + default: false + cause: + type: string + description: 'Error message of the failure that resulted in `success: false`' + required: + - success + - cause + LeaderboardsResponse: + type: object + properties: + leaderboards: + type: object + properties: + ARENA: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + MCGO: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + BATTLEGROUND: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + SURVIVAL_GAMES: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + UHC: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + WALLS: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + PROTOTYPE: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + PAINTBALL: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + SKYWARS: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + MURDER_MYSTERY: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + SUPER_SMASH: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + DUELS: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + SPEED_UHC: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + TNTGAMES: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + BEDWARS: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + GINGERBREAD: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + BUILD_BATTLE: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + ARCADE: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + SKYCLASH: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + QUAKECRAFT: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + TRUE_COMBAT: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + WALLS3: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + VAMPIREZ: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + additionalProperties: + type: array + items: + $ref: '#/components/schemas/LeaderboardDataEntry' + required: + - ARENA + - MCGO + - BATTLEGROUND + - SURVIVAL_GAMES + - UHC + - WALLS + - PROTOTYPE + - PAINTBALL + - SKYWARS + - MURDER_MYSTERY + - SUPER_SMASH + - DUELS + - SPEED_UHC + - TNTGAMES + - BEDWARS + - GINGERBREAD + - BUILD_BATTLE + - ARCADE + - SKYCLASH + - QUAKECRAFT + - TRUE_COMBAT + - WALLS3 + - VAMPIREZ + required: + - leaderboards + LeaderboardDataEntry: + type: object + properties: + path: + type: string + prefix: + type: string + title: + type: string + location: + type: string + count: + type: number + leaders: + type: array + items: + type: string + nullable: true + required: + - path + - prefix + - title + - location + - count + - leaders + GuildResponse: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + guild: + anyOf: + - $ref: '#/components/schemas/Guild' + - nullable: true + required: + - guild + Guild: + type: object + properties: + _id: + type: string + achievements: + $ref: '#/components/schemas/GuildAchievements' + banner: + $ref: '#/components/schemas/GuildBanner' + chatMute: + type: number + coins: + type: number + coinsEver: + type: number + created: + type: number + description: + type: string + nullable: true + exp: + type: number + guildExpByGameType: + $ref: '#/components/schemas/GuildExpByGameType' + hideGmTag: + type: boolean + joinable: + type: boolean + legacyRanking: + type: number + members: + type: array + items: + $ref: '#/components/schemas/GuildMember' + name: + type: string + name_lower: + type: string + preferredGames: + type: array + items: + type: string + publiclyListed: + type: boolean + ranks: + type: array + items: + $ref: '#/components/schemas/GuildRank' + tag: + type: string + tagColor: + type: string + required: + - _id + - achievements + - coins + - coinsEver + - created + - exp + - guildExpByGameType + - members + - name + - name_lower + - ranks + GuildAchievements: + type: object + properties: + WINNERS: + type: number + EXPERIENCE_KINGS: + type: number + ONLINE_PLAYERS: + type: number + required: + - WINNERS + - EXPERIENCE_KINGS + - ONLINE_PLAYERS + GuildBanner: + type: object + properties: + Base: + anyOf: + - type: number + - type: string + Patterns: + type: array + items: + type: object + properties: + Color: + anyOf: + - type: number + - type: string + Pattern: + type: string + required: + - Pattern + - Color + required: + - Base + - Patterns + GuildExpByGameType: + type: object + description: | + Earned guild exp in each game mode, where the property key is the gamemode and the value is the exp. + Most of the properties in the schema always show up, however in some instances they were absent. Additional unlisted properties can be assumed to be numbers. + properties: + ARCADE: + type: number + ARENA: + type: number + BATTLEGROUND: + type: number + BEDWARS: + type: number + BUILD_BATTLE: + type: number + DUELS: + type: number + GINGERBREAD: + type: number + HOUSING: + type: number + LEGACY: + type: number + MCGO: + type: number + MURDER_MYSTERY: + type: number + PAINTBALL: + type: number + PIT: + type: number + PROTOTYPE: + type: number + QUAKECRAFT: + type: number + REPLAY: + type: number + SKYBLOCK: + type: number + SKYWARS: + type: number + SPEED_UHC: + type: number + SUPER_SMASH: + type: number + SURVIVAL_GAMES: + type: number + TNTGAMES: + type: number + UHC: + type: number + VAMPIREZ: + type: number + WALLS: + type: number + WALLS3: + type: number + additionalProperties: + type: number + GuildMember: + type: object + properties: + expHistory: + type: object + description: | + Property keys are the date in the format YYYY-MM-DD, and the value is how much guild exp they earned on that date. + + Stores the last 7 days, so you can expect at maximum 7 properties on this exp history object. + + Example: + ```typescript + console.log(guild.members[0].expHistory['2020-11-17']); + // output: + 163214 + ``` + additionalProperties: + type: number + joined: + type: number + description: Timestamp of when this guild member joined the guild. + mutedTill: + type: number + description: If they have been muted in guild chat, this is the timestamp of when they're unmuted. + name: + type: string + description: Old value describing the member's username. This is not used anymore and rarely shows up as a valid property. + questParticipation: + type: number + rank: + type: string + description: The name of their rank, it may match the name of a rank in the rank object - otherwise they may be unranked / the GM (GM ranks are usually "GUILDMASTER" or "Guild Master") + uuid: + type: string + description: Minecraft UUID of the guild memeber. + required: + - expHistory + - joined + - uuid + - rank + GuildRank: + type: object + properties: + created: + type: number + description: Timestamp of the rank creation. + default: + type: boolean + description: Whether or not this the default rank players receive upon joining. + name: + type: string + description: Name of the rank. + priority: + type: number + description: Rank priority from lowest to highest. + tag: + type: string + nullable: true + description: Rank tag (short version of rank name or whatever else the guildmaster wants it to be). + required: + - created + - name + - priority + PlayerResponse: + type: object + properties: + player: + $ref: '#/components/schemas/NullablePlayer' + required: + - player + NullablePlayer: + anyOf: + - $ref: '#/components/schemas/Player' + - nullable: true + Player: + description: | + The player object has many properties that define specific things. There are many of these properties, and due to their iterative nature no point in typing them. + + ## Booleans + + Additional properties that are the boolean type (true/false) are usually a setting toggle or a one time event/action. + + * Properties with keys that start with "levelingReward_" and end with a number indicate when that leveling reward has been claimed. The number itself is the network level of the reward. + * Properties with keys that look like "xmas2019_MAIN_LOBBY_1" - I believe these correlate with Christmas events but not sure what true/false means for these. + * The general property key format is "xmasYEAR_TYPE_NUMBER". + * A regex to match these would be: /^xmas(\d{4})_([A-Z_]+?)_(\d+)$/ + + ## Numbers + + Additional properties that are the number type will generally either be some form of statistic, or a timestamp. + + * Properties with keys that start with "claimed_solo_bank_" will be a timestamp indicating when it was claimed. The full key will include a Minecraft UUID at the end. + * Properties with keys that roughly match "completed_christmas_quests_YEAR" will be a timestamp that indicates when they completed all the available quests for that event. + * Properties with keys that start with "anniversaryNPCProgress" will indicate how many event NPCs have been visited by the player. + + ## Arrays + + Some arrays will fit into a certain schema based on the property's key. + + * Properties with keys that start with "anniversaryNPCVisited" will be an array of numbers. + + ## Objects + + Some objects will fit into a certain schema based on the property's key. + + * Properties with keys starting with "adventRewards" will fit the "PlayerAdventRewards" schema. + * Properties with keys ending with "Cooldowns" will fit the "PlayerEventCooldown" schema. + * Properties with keys starting with "upcomingLanguageRelease_" will fit the "PlayerUpcomingLanguageRelease" schema. + * Properties with keys starting with "dmcrates-" will fit the "PlayerMonthlyCrates" schema. + allOf: + - $ref: '#/components/schemas/PlayerInfoData' + - $ref: '#/components/schemas/PlayerStatsData' + - $ref: '#/components/schemas/PlayerSettingsData' + - $ref: '#/components/schemas/PlayerFriendsData' + - $ref: '#/components/schemas/PlayerGuildData' + - $ref: '#/components/schemas/PlayerTaskData' + - $ref: '#/components/schemas/PlayerMiscData' + - $ref: '#/components/schemas/PlayerAchievementData' + - type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + - type: number + - type: array + items: + type: number + - type: array + items: + type: string + - $ref: '#/components/schemas/PlayerAdventRewards' + - $ref: '#/components/schemas/PlayerAchievementTotem' + - $ref: '#/components/schemas/PlayerChallenges' + - $ref: '#/components/schemas/PlayerCompassStats' + - $ref: '#/components/schemas/PlayerCooldowns' + - $ref: '#/components/schemas/PlayerEventCooldown' + - $ref: '#/components/schemas/PlayerFireworksStorage' + - $ref: '#/components/schemas/PlayerGiftingMeta' + - $ref: '#/components/schemas/PlayerHousingMeta' + - $ref: '#/components/schemas/PlayerMonthlyCrates' + - $ref: '#/components/schemas/PlayerMonthlyCrates' + - $ref: '#/components/schemas/PlayerOutfit' + - $ref: '#/components/schemas/PlayerParkourCheckpointBests' + - $ref: '#/components/schemas/PlayerParkourCompletions' + - $ref: '#/components/schemas/PlayerPetConsumables' + - $ref: '#/components/schemas/PlayerPetStats' + - $ref: '#/components/schemas/PlayerPlotResets' + - $ref: '#/components/schemas/PlayerQuestSettings' + - $ref: '#/components/schemas/PlayerQuests' + - $ref: '#/components/schemas/PlayerSettings' + - $ref: '#/components/schemas/PlayerSkin' + - $ref: '#/components/schemas/PlayerSocialMedia' + - $ref: '#/components/schemas/PlayerStats' + - $ref: '#/components/schemas/PlayerTourney' + - $ref: '#/components/schemas/PlayerUpcomingLanguageRelease' + - $ref: '#/components/schemas/PlayerVanityMeta' + PlayerInfoData: + type: object + properties: + _id: + type: string + uuid: + type: string + playername: + type: string + displayname: + type: string + firstLogin: + type: number + lastLogin: + type: number + lastLogout: + type: number + knownAliases: + type: array + items: + type: string + knownAliasesLower: + type: array + items: + type: string + claimed_century_cake: + type: number + description: Timestamp of when the SkyBlock Century Cake was claimed. + claimed_potato_basket: + type: number + description: Timestamp of when the Potato Basket was claimed. + claimed_potato_talisman: + type: number + description: Timestamp of when the Potato Talisman was claimed. + monthlyPackageRank: + type: string + monthlyRankColor: + type: string + newPackageRank: + type: string + packageRank: + type: string + rank: + type: string + rankPlusColor: + type: string + levelUp_NONE: + type: number + description: Timestamp indicating when they purchased the rank. + levelUp_VIP: + type: number + description: Timestamp indicating when they purchased the rank. + levelUp_VIP_PLUS: + type: number + description: Timestamp indicating when they purchased the rank. + levelUp_MVP: + type: number + description: Timestamp indicating when they purchased the rank. + levelUp_MVP_PLUS: + type: number + description: Timestamp indicating when they purchased the rank. + lastClaimedReward: + type: number + lastAdsenseGenerateTime: + type: number + lastMapVote: + type: number + mcVersionRp: + type: string + mostRecentGameType: + type: string + mostRecentMinecraftVersion: + type: number + mostRecentMonthlyPackageRank: + type: string + mostRecentlyThanked: + type: string + mostRecentlyThankedUuid: + type: string + mostRecentlyTipped: + type: string + mostRecentlyTippedUuid: + type: string + petConsumables: + $ref: '#/components/schemas/PlayerPetConsumables' + petJourneyTimestamp: + type: number + quickjoin_timestamp: + type: number + quickjoin_uses: + type: number + scorpius_bribe_96: + type: number + testPass: + type: boolean + watchdogBlockTimestamp: + type: number + required: + - _id + - displayname + - knownAliases + - knownAliasesLower + - playername + - uuid + PlayerStatsData: + type: object + properties: + adsense_tokens: + type: number + networkExp: + type: number + karma: + type: number + coins: + type: number + eulaCoins: + type: boolean + kills: + type: number + killstreaks: + type: number + deaths: + type: number + wins: + type: number + fortuneBuff: + type: number + gifts_grinch: + type: number + hasTheHotPotato: + type: boolean + main2017Tutorial: + type: boolean + monthlycrates: + $ref: '#/components/schemas/PlayerMonthlyCrates' + network_update_book: + type: string + description: This property represents a version - e.g. "v0.75" + parkourCheckpointBests: + $ref: '#/components/schemas/PlayerParkourCheckpointBests' + parkourCompletions: + $ref: '#/components/schemas/PlayerParkourCompletions' + petStats: + $ref: '#/components/schemas/PlayerPetStats' + rewardConsumed: + type: boolean + rewardHighScore: + type: number + rewardScore: + type: number + rewardStreak: + type: number + skyblock_free_cookie: + type: number + shots_fired: + type: number + snowball_fight_intro_2019: + type: boolean + stats: + $ref: '#/components/schemas/PlayerStats' + thanksReceived: + type: number + thanksSent: + type: number + timePlaying: + type: number + totalDailyRewards: + type: number + totalRewards: + type: number + tourney: + $ref: '#/components/schemas/PlayerTourney' + tournamentTokens: + type: number + vanityConvertedBoxToday: + type: number + vanityFirstConvertedBox: + type: number + voting: + $ref: '#/components/schemas/PlayerVoting' + vanityTokens: + type: number + required: + - stats + PlayerSettingsData: + type: object + properties: + language: + type: string + autoDetectLanguage: + type: boolean + auto_spawn_pet: + type: boolean + battlePassGlowStatus: + type: boolean + channel: + type: string + chat: + type: boolean + clock: + type: boolean + collectibles_menu_sort: + type: string + collectibles_menu_visibility_sort: + type: string + combatTracker: + type: boolean + currentClickEffect: + type: string + currentCloak: + type: string + currentEmote: + type: string + currentGadget: + type: string + currentHat: + type: string + currentPet: + type: string + customFilter: + type: string + disableTipMessages: + type: boolean + disguise: + type: string + gadget: + type: string + notifications: + type: boolean + outfit: + $ref: '#/components/schemas/PlayerOutfit' + onetime_achievement_menu_sort: + type: string + onetime_achievement_menu_sort_completion_sort: + type: string + particlePack: + type: string + petActive: + type: boolean + pp: + type: string + description: Particle pack, e.g. "note", "anger", "enchantment", etc. + questSettings: + $ref: '#/components/schemas/PlayerQuestSettings' + seeRequests: + type: boolean + sendCerberusMessages: + type: boolean + settings: + $ref: '#/components/schemas/PlayerSettings' + skin: + $ref: '#/components/schemas/PlayerSkin' + socialMedia: + $ref: '#/components/schemas/PlayerSocialMedia' + spec_always_flying: + type: boolean + spec_auto_teleport: + type: boolean + spec_first_person: + type: boolean + spectators_invisible: + type: boolean + tiered_achievement_menu_sort: + type: string + transformation: + type: string + userLanguage: + type: string + vanityFavorites: + type: string + wardrobe: + type: string + PlayerFriendsData: + type: object + properties: + friendBlocksUuid: + type: array + items: + type: string + friendRequests: + type: array + items: + type: string + friendRequestsUuid: + type: array + items: + type: string + additionalProperties: + type: array + items: + type: string + PlayerGuildData: + type: object + properties: + guildInvites: + type: array + items: + type: string + guildKickReason: + type: string + guildNotifications: + type: boolean + PlayerTaskData: + type: object + properties: + challenges: + $ref: '#/components/schemas/PlayerChallenges' + quests: + $ref: '#/components/schemas/PlayerQuests' + PlayerMiscData: + type: object + properties: + aprilFoolsStaffClicked_0: + type: array + items: + type: string + anniversaryNPCProgress2020: + type: number + anniversaryNPCVisited2020: + type: array + items: + type: number + SANTA_FINISHED: + type: boolean + SANTA_QUEST_STARTED: + type: boolean + compassStats: + $ref: '#/components/schemas/PlayerCompassStats' + cooldowns: + $ref: '#/components/schemas/PlayerCooldowns' + fireworksStorage: + $ref: '#/components/schemas/PlayerFireworksStorage' + giftingMeta: + $ref: '#/components/schemas/PlayerGiftingMeta' + housingMeta: + $ref: '#/components/schemas/PlayerHousingMeta' + vanityMeta: + $ref: '#/components/schemas/PlayerVanityMeta' + flashingSaleClicks: + type: number + flashingSaleOpens: + type: number + flashingSalePoppedUp: + type: number + flashingSalePopup: + type: number + adventRewards2017: + $ref: '#/components/schemas/PlayerAdventRewards' + adventRewards2018: + $ref: '#/components/schemas/PlayerAdventRewards' + adventRewards_v2_2018: + $ref: '#/components/schemas/PlayerAdventRewards' + adventRewards2019: + $ref: '#/components/schemas/PlayerAdventRewards' + adventRewards_v2_2019: + $ref: '#/components/schemas/PlayerAdventRewards' + christmas2019Cooldowns: + $ref: '#/components/schemas/PlayerEventCooldown' + summer2020Cooldowns: + $ref: '#/components/schemas/PlayerEventCooldown' + easter2020Cooldowns: + $ref: '#/components/schemas/PlayerEventCooldown' + easter2020Cooldowns2: + $ref: '#/components/schemas/PlayerEventCooldown' + halloween2016Cooldowns: + $ref: '#/components/schemas/PlayerEventCooldown' + halloween2020Cooldowns: + $ref: '#/components/schemas/PlayerEventCooldown' + holiday2016Cooldowns: + $ref: '#/components/schemas/PlayerEventCooldown' + specialtyCooldowns: + $ref: '#/components/schemas/PlayerEventCooldown' + upcomingLanguageRelease_Korean: + $ref: '#/components/schemas/PlayerUpcomingLanguageRelease' + upcomingLanguageRelease_Portuguese: + $ref: '#/components/schemas/PlayerUpcomingLanguageRelease' + upcomingLanguageRelease_Russian: + $ref: '#/components/schemas/PlayerUpcomingLanguageRelease' + plotResets: + $ref: '#/components/schemas/PlayerPlotResets' + PlayerAdventRewards: + type: object + description: | + An object where each property is the day of the reward and the value is the timestamp it was claimed. Property keys look like "dayNUMBER" e.g. day1. + The property keys on the player object generally follow the format "adventRewardsYEAR" or "adventrewards_v2_YEAR". + additionalProperties: + type: number + description: A timestamp. + PlayerEventCooldown: + type: object + description: | + Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + additionalProperties: + type: boolean + PlayerUpcomingLanguageRelease: + type: object + description: | + An object describing what I assume to be testers who've logged in with a specific language. + properties: + logins: + type: number + required: + - logins + PlayerAchievementData: + type: object + properties: + achievementPoints: + type: number + achievementRewardsNew: + $ref: '#/components/schemas/PlayerAchievementRewardsNew' + achievementSync: + $ref: '#/components/schemas/PlayerAchievementSync' + achievementTotem: + $ref: '#/components/schemas/PlayerAchievementTotem' + achievementTracking: + type: array + items: + type: string + achievementTrackingHideMessages: + type: boolean + achievements: + $ref: '#/components/schemas/PlayerAchievements' + achievementsOneTime: + type: array + description: Array of values, each value representing an achievement. + items: + type: string + required: + - achievementPoints + - achievementTracking + - achievements + - achievementsOneTime + PlayerAchievementRewardsNew: + type: object + description: Object property keys are in the format "for_points_NUMBER". + additionalProperties: + type: number + PlayerAchievementSync: + type: object + properties: + quake_tiered: + type: number + required: + - quake_tiered + additionalProperties: + type: number + PlayerAchievementTotem: + type: object + properties: + allowed_max_height: + type: number + canCustomize: + type: boolean + selectedColors: + type: object + description: Object property keys are in the format "slotcolor_NUMBER" + additionalProperties: + type: string + selectedParts: + type: object + description: Object property keys are in the format "slot_NUMBER" + additionalProperties: + type: string + unlockedColors: + type: array + items: + type: string + unlockedParts: + type: array + items: + type: string + required: + - allowed_max_height + - canCustomize + - selectedColors + - selectedParts + - unlockedColors + - unlockedParts + PlayerAchievements: + type: object + description: Tiered / numbered achievements the player has earned. All known properties are listed but given it's Hypixel it's subject to change fairly often. + properties: + arcade_arcade_banker: + type: number + arcade_bounty_hunter: + type: number + arena_climb_the_ranks: + type: number + bedwars_beds: + type: number + bedwars_bedwars_killer: + type: number + bedwars_collectors_edition: + type: number + bedwars_level: + type: number + bedwars_loot_box: + type: number + bedwars_wins: + type: number + buildbattle_build_battle_points: + type: number + buildbattle_build_battle_score: + type: number + buildbattle_build_battle_voter: + type: number + buildbattle_guess_the_build_guesses: + type: number + buildbattle_guess_the_build_winner: + type: number + christmas2017_advent_2019: + type: number + christmas2017_present_collector: + type: number + christmas2017_santa_says_rounds: + type: number + duels_bridge_doubles_wins: + type: number + duels_bridge_duels_wins: + type: number + duels_bridge_four_teams_wins: + type: number + duels_bridge_teams_wins: + type: number + duels_bridge_win_streak: + type: number + duels_bridge_wins: + type: number + duels_duels_division: + type: number + duels_duels_traveller: + type: number + duels_duels_win_streak: + type: number + duels_duels_winner: + type: number + duels_goals: + type: number + duels_unique_map_wins: + type: number + easter_throw_eggs: + type: number + general_challenger: + type: number + general_coins: + type: number + general_quest_master: + type: number + general_wins: + type: number + gingerbread_banker: + type: number + halloween2017_pumpkinator: + type: number + paintball_coins: + type: number + paintball_kill_streaks: + type: number + paintball_kills: + type: number + pit_contracts: + type: number + pit_events: + type: number + pit_gold: + type: number + pit_kills: + type: number + quake_coins: + type: number + quake_headshots: + type: number + quake_killing_sprees: + type: number + quake_kills: + type: number + quake_wins: + type: number + skyblock_angler: + type: number + skyblock_augmentation: + type: number + skyblock_combat: + type: number + skyblock_concoctor: + type: number + skyblock_domesticator: + type: number + skyblock_dungeoneer: + type: number + skyblock_excavator: + type: number + skyblock_gatherer: + type: number + skyblock_harvester: + type: number + skyblock_minion_lover: + type: number + skyblock_slayer: + type: number + skyblock_treasure_hunter: + type: number + skyblock_treasury: + type: number + skyblock_unique_gifts: + type: number + skyclash_cards_unlocked: + type: number + skywars_cages: + type: number + skywars_heads: + type: number + skywars_kills_solo: + type: number + skywars_kills_team: + type: number + skywars_kits_solo: + type: number + skywars_kits_team: + type: number + skywars_new_day_new_challenge: + type: number + skywars_wins_lab: + type: number + skywars_wins_solo: + type: number + skywars_wins_team: + type: number + skywars_you_re_a_star: + type: number + summer_shopaholic: + type: number + supersmash_hero_slayer: + type: number + tntgames_block_runner: + type: number + tntgames_tnt_banker: + type: number + tntgames_tnt_triathlon: + type: number + walls3_coins: + type: number + walls3_guardian: + type: number + walls3_jack_of_all_trades: + type: number + walls3_rusher: + type: number + additionalProperties: + type: number + PlayerSettings: + type: object + properties: + compass: + type: object + additionalProperties: + type: string + allowFriendRequests: + type: boolean + allowPartyRequests: + type: boolean + autoSpawnPet: + type: boolean + bloodVisibility: + type: boolean + chatVisibility: + type: boolean + duelInvitePrivacy: + type: string + friendRequestPrivacy: + type: string + legacyCompass: + type: boolean + lobbySpeed: + type: boolean + lobbyProtection: + type: boolean + petVisibility: + type: boolean + partyInvitePrivacy: + type: string + privateMessageSounds: + type: boolean + profanityLevel: + type: string + profanityLevel_GUILD: + type: string + profanityLevel_PARTY: + type: string + profanityLevel_PM: + type: string + spec_speed: + type: number + additionalProperties: + anyOf: + - type: boolean + - type: string + - type: number + - type: object + additionalProperties: + type: string + PlayerSkin: + type: object + properties: + signature: + type: string + timeoutStart: + type: number + value: + type: string + required: + - signature + - timeoutStart + - value + PlayerSocialMedia: + anyOf: + - $ref: '#/components/schemas/PlayerSocialMediaLinks' + - type: object + properties: + links: + $ref: '#/components/schemas/PlayerSocialMediaLinks' + prompt: + type: boolean + required: + - links + - prompt + additionalProperties: + anyOf: + - type: string + - type: boolean + - $ref: '#/components/schemas/PlayerSocialMediaLinks' + PlayerSocialMediaLinks: + type: object + properties: + DISCORD: + type: string + HYPIXEL: + type: string + INSTAGRAM: + type: string + TWITCH: + type: string + TWITTER: + type: string + YOUTUBE: + type: string + additionalProperties: + type: string + PlayerStats: + type: object + description: The player stats object contains statistics for individual game modes. + properties: + Arcade: + $ref: '#/components/schemas/PlayerStatsGameMode' + Arena: + $ref: '#/components/schemas/PlayerStatsGameMode' + Battleground: + $ref: '#/components/schemas/PlayerStatsGameMode' + Bedwars: + $ref: '#/components/schemas/PlayerStatsBedwars' + BuildBattle: + $ref: '#/components/schemas/PlayerStatsGameMode' + Duels: + $ref: '#/components/schemas/PlayerStatsGameMode' + GingerBread: + $ref: '#/components/schemas/PlayerStatsGameMode' + HungerGames: + $ref: '#/components/schemas/PlayerStatsGameMode' + Legacy: + $ref: '#/components/schemas/PlayerStatsGameMode' + MCGO: + $ref: '#/components/schemas/PlayerStatsGameMode' + MurderMystery: + $ref: '#/components/schemas/PlayerStatsGameMode' + Paintball: + $ref: '#/components/schemas/PlayerStatsGameMode' + Pit: + $ref: '#/components/schemas/PlayerStatsPit' + Quake: + $ref: '#/components/schemas/PlayerStatsGameMode' + SkyBlock: + $ref: '#/components/schemas/PlayerStatsSkyBlock' + SkyWars: + $ref: '#/components/schemas/PlayerStatsGameMode' + SpeedUHC: + $ref: '#/components/schemas/PlayerStatsGameMode' + SuperSmash: + $ref: '#/components/schemas/PlayerStatsGameMode' + TNTGames: + $ref: '#/components/schemas/PlayerStatsGameMode' + TrueCombat: + $ref: '#/components/schemas/PlayerStatsGameMode' + UHC: + $ref: '#/components/schemas/PlayerStatsGameMode' + VampireZ: + $ref: '#/components/schemas/PlayerStatsGameMode' + Walls: + $ref: '#/components/schemas/PlayerStatsGameMode' + Walls3: + $ref: '#/components/schemas/PlayerStatsWalls3' + SkyClash: + $ref: '#/components/schemas/PlayerStatsGameMode' + Housing: + $ref: '#/components/schemas/PlayerStatsHousing' + additionalProperties: + anyOf: + - $ref: '#/components/schemas/PlayerStatsGameMode' + - $ref: '#/components/schemas/PlayerStatsBedwars' + - $ref: '#/components/schemas/PlayerStatsPit' + - $ref: '#/components/schemas/PlayerStatsSkyBlock' + - $ref: '#/components/schemas/PlayerStatsWalls3' + - $ref: '#/components/schemas/PlayerStatsHousing' + PlayerStatsGameMode: + type: object + properties: + packages: + type: array + items: + type: string + additionalProperties: + anyOf: + - type: number + - type: boolean + - type: string + - type: array + items: + type: string + PlayerStatsBedwars: + description: Stats for bedwars. + allOf: + - $ref: '#/components/schemas/PlayerStatsGameMode' + - $ref: '#/components/schemas/PlayerStatsBedwarsInfo' + - $ref: '#/components/schemas/PlayerStatsBedwarsStats' + PlayerStatsBedwarsInfo: + description: | + These properties generally have to do with either settings, info (like coins, exp, items), and some universal stats. + + Some properties aren't listed but certain values can be expected based on the property's key. + + * Properties that have keys which start with "voted_" (e.g. voted_enderman) will be a boolean. + * Properties that have keys which start with "quickjoin_uses_" (e.g. quickjoin_uses_Amazon) will be a number. + type: object + properties: + chest_history: + type: string + chest_history_new: + type: array + items: + type: string + coins: + type: number + Experience: + type: number + Experience_new: + type: number + Bedwars_openedChests: + type: number + Bedwars_openedCommons: + type: number + Bedwars_openedEpics: + type: number + Bedwars_openedLegendaries: + type: number + Bedwars_openedRares: + type: number + activeBedDestroy: + type: string + activeDeathCry: + type: string + activeGlyph: + type: string + activeIslandTopper: + type: string + activeKillEffect: + type: string + activeKillMessages: + type: string + activeNPCSkin: + type: string + activeProjectileTrail: + type: string + activeSprays: + type: string + activeVictoryDance: + type: string + activeWoodType: + type: string + favourites_1: + type: string + favourites_2: + type: string + first_join_7: + type: boolean + understands_resource_bank: + type: boolean + understands_streaks: + type: boolean + privategames: + $ref: '#/components/schemas/PlayerStatsBedwarsPrivateGamesSettings' + additionalProperties: + anyOf: + - type: number + - type: string + - type: boolean + - type: array + items: + type: string + - $ref: '#/components/schemas/PlayerStatsBedwarsPrivateGamesSettings' + PlayerStatsBedwarsStats: + type: object + description: | + This interface lists keys that should be fairly common. + All of these calls have variant specific values that get prepended by a game mode. + + ### Modes + * castle_ + * two_four_ + * four_three_ + * four_four_ + * eight_one_ + * eight_two_ + * tourney_bedwars4s_-1_ + * tourney_bedwars4s_0_ + * tourney_bedwars4s_1_ + * tourney_bedwars_two_four_0_ + + #### Sub Modes + * armed_ + * lucky_ + * no_void_ + * rush_ + * ultimate_ + * voidless_ + + ### Explanation + + So aside from the base / default mode which this interface describes, you can find the stats for a specific game mode by joining the above values. + + For example, if you want the "wins_bedwars" value but for rush on four four you'd find that on the key "four_four_rush_wins_bedwars", if it exists. + properties: + _items_purchased_bedwars: + type: number + beds_broken_bedwars: + type: number + beds_lost_bedwars: + type: number + deaths_bedwars: + type: number + diamond_resources_collected_bedwars: + type: number + emerald_resources_collected_bedwars: + type: number + entity_attack_deaths_bedwars: + type: number + entity_attack_final_deaths_bedwars: + type: number + entity_attack_final_kills_bedwars: + type: number + entity_attack_kills_bedwars: + type: number + entity_explosion_deaths_bedwars: + type: number + entity_explosion_final_deaths_bedwars: + type: number + entity_explosion_final_kills_bedwars: + type: number + entity_explosion_kills_bedwars: + type: number + fall_deaths_bedwars: + type: number + fall_final_deaths_bedwars: + type: number + fall_final_kills_bedwars: + type: number + fall_kills_bedwars: + type: number + final_deaths_bedwars: + type: number + final_kills_bedwars: + type: number + fire_deaths_bedwars: + type: number + fire_final_deaths_bedwars: + type: number + fire_tick_deaths_bedwars: + type: number + fire_tick_final_deaths_bedwars: + type: number + games_played_bedwars: + type: number + gold_resources_collected_bedwars: + type: number + iron_resources_collected_bedwars: + type: number + items_purchased_bedwars: + type: number + kills_bedwars: + type: number + losses_bedwars: + type: number + permanent _items_purchased_bedwars: + type: number + permanent_items_purchased_bedwars: + type: number + projectile_deaths_bedwars: + type: number + projectile_final_deaths_bedwars: + type: number + projectile_final_kills_bedwars: + type: number + projectile_kills_bedwars: + type: number + resources_collected_bedwars: + type: number + suffocation_deaths_bedwars: + type: number + void_deaths_bedwars: + type: number + void_final_deaths_bedwars: + type: number + void_final_kills_bedwars: + type: number + void_kills_bedwars: + type: number + wins_bedwars: + type: number + winstreak: + type: number + PlayerStatsBedwarsPrivateGamesSettings: + type: object + properties: + bed_instabreak: + type: boolean + disable_block_protection: + type: boolean + event_time: + type: string + health_buff: + type: string + low_gravity: + type: boolean + max_team_upgrades: + type: boolean + no_diamonds: + type: boolean + no_emeralds: + type: boolean + one_hit_one_kill: + type: boolean + respawn_time: + type: string + speed: + type: string + PlayerStatsPit: + allOf: + - $ref: '#/components/schemas/PlayerStatsGameMode' + - type: object + properties: + pit_stats_ptl: + $ref: '#/components/schemas/PlayerStatsGameMode' + profile: + $ref: '#/components/schemas/PlayerStatsPitProfile' + additionalProperties: + anyOf: + - $ref: '#/components/schemas/PlayerStatsGameMode' + - $ref: '#/components/schemas/PlayerStatsPitProfile' + required: + - profile + PlayerStatsPitProfile: + allOf: + - $ref: '#/components/schemas/PlayerStatsGameMode' + - type: object + properties: + bounties: + type: array + items: + $ref: '#/components/schemas/PlayerStatsPitProfileBounty' + cash: + type: number + contract: + $ref: '#/components/schemas/PlayerStatsPitProfileContract' + contract_choices: + type: array + items: + $ref: '#/components/schemas/PlayerStatsPitProfileContract' + death_recaps: + $ref: '#/components/schemas/PlayerStatsPitProfileInventory' + ended_contracts: + type: array + items: + $ref: '#/components/schemas/PlayerStatsPitProfileEndedContract' + gold_transactions: + type: array + items: + $ref: '#/components/schemas/PlayerStatsPitProfileTransaction' + hotbar_favorites: + type: array + items: + type: number + inv_armor: + $ref: '#/components/schemas/PlayerStatsPitProfileInventory' + inv_contents: + $ref: '#/components/schemas/PlayerStatsPitProfileInventory' + inv_enderchest: + $ref: '#/components/schemas/PlayerStatsPitProfileInventory' + item_stash: + $ref: '#/components/schemas/PlayerStatsPitProfileInventory' + items_last_buy: + $ref: '#/components/schemas/PlayerStatsPitProfileLastBoughtItems' + last_contract: + type: number + description: Timestamp. + last_midfight_disconnect: + description: Timestamp. + type: number + last_save: + description: Timestamp. + type: number + leaderboard_stats: + $ref: '#/components/schemas/PlayerStatsPitProfileLeaderboardStats' + login_messages: + type: array + items: + type: string + outgoing_offers: + type: array + items: + $ref: '#/components/schemas/PlayerStatsPitProfileOutgoingOffer' + prestiges: + type: array + items: + $ref: '#/components/schemas/PlayerStatsPitProfilePrestige' + reconessence_day: + description: Timestamp. + type: number + renown: + type: number + renown_unlocks: + type: array + items: + $ref: '#/components/schemas/PlayerStatsPitProfileUnlock' + selected_killstreak_0: + nullable: true + type: string + selected_killstreak_1: + nullable: true + type: string + selected_killstreak_2: + nullable: true + type: string + selected_killstreak_3: + nullable: true + type: string + selected_perk_0: + nullable: true + type: string + selected_perk_1: + nullable: true + type: string + selected_perk_2: + nullable: true + type: string + selected_perk_3: + nullable: true + type: string + spire_stash_armor: + $ref: '#/components/schemas/PlayerStatsPitProfileInventory' + spire_stash_inv: + $ref: '#/components/schemas/PlayerStatsPitProfileInventory' + trade_timestamps: + type: array + items: + type: number + unlocks: + type: array + description: Other properties of this type might appear with the key "unlocks_NUMBER" e.g. "unlocks_10" + items: + $ref: '#/components/schemas/PlayerStatsPitProfileUnlock' + xp: + type: number + zero_point_three_gold_transfer: + type: boolean + additionalProperties: + anyOf: + - type: array + items: + $ref: '#/components/schemas/PlayerStatsPitProfileBounty' + - $ref: '#/components/schemas/PlayerStatsPitProfileContract' + - type: array + items: + $ref: '#/components/schemas/PlayerStatsPitProfileContract' + - type: array + items: + $ref: '#/components/schemas/PlayerStatsPitProfileEndedContract' + - type: array + items: + $ref: '#/components/schemas/PlayerStatsPitProfileTransaction' + - $ref: '#/components/schemas/PlayerStatsPitProfileLeaderboardStats' + - type: array + items: + $ref: '#/components/schemas/PlayerStatsPitProfileOutgoingOffer' + - $ref: '#/components/schemas/PlayerStatsPitProfileInventory' + - type: array + items: + $ref: '#/components/schemas/PlayerStatsPitProfilePrestige' + - type: array + items: + $ref: '#/components/schemas/PlayerStatsPitProfileUnlock' + - type: array + items: + type: number + required: + - inv_armor + - inv_contents + - last_save + - login_messages + PlayerStatsPitProfileBounty: + type: object + properties: + amount: + type: number + issuer: + type: string + remainingTicks: + type: number + timestamp: + type: number + required: + - amount + - issuer + - remainingTicks + - timestamp + PlayerStatsPitProfileContract: + allOf: + - $ref: '#/components/schemas/PlayerStatsPitProfileEndedContract' + - type: object + properties: + gold_reward: + type: number + key: + type: string + required: + - gold_reward + - key + PlayerStatsPitProfileEndedContract: + type: object + properties: + chunk_of_viles_reward: + type: number + completion_date: + type: number + difficulty: + type: string + progress: + $ref: '#/components/schemas/PlayerStatsPitProfileContractRequirements' + remaining_ticks: + type: number + requirements: + $ref: '#/components/schemas/PlayerStatsPitProfileContractRequirements' + additionalProperties: + anyOf: + - type: number + - type: string + - $ref: '#/components/schemas/PlayerStatsPitProfileContractRequirements' + required: + - completion_date + - difficulty + - progress + - remaining_ticks + - requirements + PlayerStatsPitProfileContractRequirements: + type: object + description: Property key is the type of requirement. + additionalProperties: + type: number + PlayerStatsPitProfileTransaction: + type: object + properties: + amount: + type: number + timestamp: + type: number + required: + - amount + - timestamp + PlayerStatsPitProfileLastBoughtItems: + type: object + additionalProperties: + type: number + PlayerStatsPitProfileLeaderboardStats: + type: object + additionalProperties: + type: number + PlayerStatsPitProfileOutgoingOffer: + type: object + description: No properties known. + additionalProperties: + type: object + PlayerStatsPitProfilePrestige: + type: object + properties: + index: + type: number + timestamp: + type: number + xp_on_prestige: + type: number + required: + - index + - timestamp + - xp_on_prestige + PlayerStatsPitProfileUnlock: + type: object + properties: + acquireDate: + type: number + key: + type: string + tier: + type: number + required: + - acquireDate + - key + - tier + PlayerStatsPitProfileInventory: + type: object + properties: + data: + type: array + items: + type: number + type: + type: number + required: + - data + - type + PlayerStatsSkyBlock: + type: object + description: An object which properties describe each individual profile the player is a member of. + properties: + profiles: + type: object + additionalProperties: + type: object + properties: + cute_name: + type: string + profile_id: + type: string + required: + - cute_name + - profile_id + required: + - profiles + PlayerStatsWalls3: + allOf: + - $ref: '#/components/schemas/PlayerStatsGameMode' + - type: object + properties: + classes: + $ref: '#/components/schemas/PlayerStatsWalls3Classes' + additionalProperties: + anyOf: + - $ref: '#/components/schemas/PlayerStatsWalls3Classes' + required: + - profile + PlayerStatsWalls3Classes: + type: object + description: Each property key describes a class name. + additionalProperties: + type: object + additionalProperties: + anyOf: + - type: boolean + - type: number + PlayerStatsHousing: + type: object + description: | + Housing stats, generally limited to layout items - either the layout_items property will exist or there may be a property in the format of "layout_items_UUID". + properties: + layout_items: + $ref: '#/components/schemas/PlayerStatsHousingLayoutItems' + additionalProperties: + $ref: '#/components/schemas/PlayerStatsHousingLayoutItems' + PlayerStatsHousingLayoutItems: + type: object + additionalProperties: + type: string + PlayerVoting: + type: object + properties: + last_mcf: + type: number + last_mcipl: + type: number + last_mcmp: + type: number + last_mcsl: + type: number + last_mcsorg: + type: number + last_minestatus: + type: number + last_pact: + type: number + last_pmc: + type: number + last_topg: + type: number + last_vote: + type: number + secondary_mcf: + type: number + secondary_mcipl: + type: number + secondary_mcmp: + type: number + secondary_mcsl: + type: number + secondary_mcsorg: + type: number + secondary_minestatus: + type: number + secondary_pact: + type: number + secondary_pmc: + type: number + secondary_topg: + type: number + total: + type: number + total_mcf: + type: number + total_mcipl: + type: number + total_mcmp: + type: number + total_mcsl: + type: number + total_mcsorg: + type: number + total_minestatus: + type: number + total_pact: + type: number + total_pmc: + type: number + total_topg: + type: number + votesToday: + type: number + additionalProperties: + type: number + required: + - total + PlayerChallenges: + type: object + description: | + In addition to the all_time property, other properties may appear that have properties that start with "day_" but have the same schema as all_time. + properties: + all_time: + $ref: '#/components/schemas/PlayerChallengesObject' + additionalProperties: + $ref: '#/components/schemas/PlayerChallengesObject' + required: + - all_time + PlayerChallengesObject: + type: object + description: | + Each property key correlates with an ID from the /resources/challenges endpoint. + For example, a key might be "ARCADE__farm_hunt_challenge" + additionalProperties: + type: number + PlayerCompassStats: + type: object + properties: + compass: + $ref: '#/components/schemas/PlayerCompassStatsChild' + npc: + $ref: '#/components/schemas/PlayerCompassStatsChild' + PlayerCompassStatsChild: + type: object + properties: + arcade: + type: number + arena: + type: number + battleground: + type: number + buildbattle: + type: number + gingerbread: + type: number + housing: + type: number + hungergames: + type: number + leveling: + type: number + mainlobby: + type: number + mcgo: + type: number + miniwalls: + type: number + paintball: + type: number + prototype: + type: number + quake: + type: number + skyclash: + type: number + skywars: + type: number + speeduhc: + type: number + supersmash: + type: number + tntgames: + type: number + truecombat: + type: number + uhc: + type: number + vampirez: + type: number + walls: + type: number + walls3: + type: number + additionalProperties: + type: number + PlayerCooldowns: + type: object + properties: + fun: + type: object + properties: + event: + type: number + events: + type: number + event_scrambled: + type: number + event_quickmaths: + type: number + santaclaus: + type: number + piano: + type: number + whatsmyface: + type: number + required: + - fun + PlayerEugene: + type: object + properties: + dailyTwoKExp: + type: number + weekly_booster: + type: number + required: + - dailyTwoKExp + PlayerFireworksStorage: + type: array + items: + type: object + properties: + colors: + type: string + fade_colors: + type: string + flight_duration: + type: number + selected: + type: boolean + shape: + type: string + trail: + type: boolean + twinkle: + type: boolean + required: + - colors + - fade_colors + - flight_duration + - selected + - trail + - twinkle + PlayerGiftingMeta: + type: object + properties: + bundlesReceived: + type: number + bundlesGiven: + type: number + giftsGiven: + type: number + milestones: + type: array + items: + type: string + realBundlesGiven: + type: number + realBundlesReceived: + type: number + realBundlesReceivedInc: + type: number + PlayerHousingMeta: + type: object + description: Potentially has properties that follow format "given_cookies_NUMBER" which will be an array of strings. + properties: + allowedBlocks: + type: array + items: + type: string + firstHouseJoinMs: + type: number + packages: + type: array + items: + type: string + playerSettings: + $ref: '#/components/schemas/PlayerHousingMetaPlayerSettings' + plotSize: + type: string + tutorialStep: + type: string + playlist: + type: string + selectedChannels_v3: + type: array + items: + type: string + purchasedSlots: + type: number + toggle_BORDER: + type: boolean + toggle_TIPS: + type: boolean + visibilityDisabled: + type: boolean + additionalProperties: + anyOf: + - type: string + - type: number + - type: boolean + - type: array + items: + type: string + - $ref: '#/components/schemas/PlayerHousingMetaPlayerSettings' + PlayerHousingMetaPlayerSettings: + type: object + properties: + VISIBILITY: + type: string + BORDER: + type: string + TIPS: + type: string + customVisibility: + type: number + YT_REPULSOR: + type: string + additionalProperties: + anyOf: + - type: string + - type: number + PlayerMonthlyCrates: + type: object + description: Each property is a month and year like "8-2019" and the value contains booleans indicating which reward tier was claimed. + additionalProperties: + type: object + properties: + REGULAR: + type: boolean + VIP: + type: boolean + VIP_PLUS: + type: boolean + MVP: + type: boolean + MVP_PLUS: + type: boolean + additionalProperties: + type: boolean + description: Each property is a boolean indicating the rank's monthly crate that was claimed. e.g. "REGULAR = true" and "VIP_PLUS = true". + PlayerOutfit: + type: object + properties: + BOOTS: + type: string + CHESTPLATE: + type: string + HELMET: + type: string + LEGGINGS: + type: string + PlayerParkourCheckpointBests: + type: object + description: Each property key describes the location of the parkour. e.g. "Prototype" or "Bedwars". + additionalProperties: + type: object + description: Each property key describes the checkpoint number. e.g. "0" or "3" + additionalProperties: + type: number + description: Time in milliseconds it took to reach this checkpoint. + PlayerParkourCompletions: + type: object + description: Each property key describes the location of the parkour. e.g. "Prototype" or "Bedwars". + additionalProperties: + type: array + items: + type: object + properties: + timeStart: + type: number + description: Timestamp of when this parkour was started. + timeTook: + type: number + description: Time in milliseconds that it took to complete the parkour. + required: + - timeStart + - timeTook + PlayerPetConsumables: + type: object + description: This object describes the pet pet consumables the player has. Each property's key is the consumable name. e.g. "APPLE" or "WOOD_SWORD" + additionalProperties: + type: number + PlayerPetStats: + type: object + description: Each property key is the name of the pet the stats apply to. + additionalProperties: + $ref: '#/components/schemas/PlayerIndividualPetStats' + PlayerIndividualPetStats: + type: object + properties: + EXERCISE: + $ref: '#/components/schemas/PlayerIndividualPetStatsCare' + HUNGER: + $ref: '#/components/schemas/PlayerIndividualPetStatsCare' + THIRST: + $ref: '#/components/schemas/PlayerIndividualPetStatsCare' + experience: + type: number + name: + type: string + PlayerIndividualPetStatsCare: + type: object + properties: + timestamp: + type: number + value: + type: number + required: + - timestamp + - value + PlayerPlotResets: + type: object + properties: + time: + description: Timestamp of when the reset occurred. + type: number + uuid: + description: Minecraft UUID + type: string + required: + - time + - uuid + PlayerQuests: + type: object + description: An object which has properties which match quests described by the /resources/quests endpoint. + additionalProperties: + $ref: '#/components/schemas/PlayerQuestsInfo' + PlayerQuestSettings: + type: object + properties: + autoActivate: + type: boolean + PlayerQuestsInfo: + type: object + description: Use this own object's key to find the quest from the /resources/quests endpoint in order to interpret this information. + properties: + active: + type: object + properties: + objectives: + type: object + description: The property key is the objective name. e.g. "wins" or "2v2" + additionalProperties: + anyOf: + - type: number + - type: string + started: + type: number + required: + - objectives + completions: + type: array + items: + type: object + properties: + time: + type: number + required: + - time + PlayerTourney: + type: object + description: Aside from the properties in the schema this object contains properties who's keys follow a format like "GAMEMODE_TYPE_NUMBER". e.g. "sw_insane_doubles_0". These fit the "PlayerTourneyGameData" schema. + properties: + first_join_lobby: + type: number + hide_purchased: + type: boolean + playtime: + type: object + additionalProperties: + type: number + shop_sort: + type: string + total_tributes: + type: number + additionalProperties: + anyOf: + - type: number + - type: string + - type: boolean + - type: object + additionalProperties: + type: number + - $ref: '#/components/schemas/PlayerTourneyGameData' + PlayerTourneyGameData: + type: object + properties: + claimed_ranking_reward: + type: number + first_win: + type: number + games_played: + type: number + playtime: + type: number + seenRPbook: + type: boolean + tributes_earned: + type: number + PlayerVanityMeta: + type: object + properties: + packages: + type: array + items: + type: string + required: + - packages + ResourcesResponse: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + lastUpdated: + type: integer + description: Unix timestamp this resource was last updated. + required: + - success + - lastUpdated + AchievementsResourceResponse: + allOf: + - $ref: '#/components/schemas/ResourcesResponse' + - type: object + properties: + achievements: + type: object + description: Object describing each game mode's achievement data. The game mode is the object's key. + properties: + arcade: + $ref: '#/components/schemas/AchievementGameModeData' + arena: + $ref: '#/components/schemas/AchievementGameModeData' + bedwars: + $ref: '#/components/schemas/AchievementGameModeData' + blitz: + $ref: '#/components/schemas/AchievementGameModeData' + buildbattle: + $ref: '#/components/schemas/AchievementGameModeData' + christmas2017: + $ref: '#/components/schemas/AchievementGameModeData' + copsandcrims: + $ref: '#/components/schemas/AchievementGameModeData' + duels: + $ref: '#/components/schemas/AchievementGameModeData' + easter: + $ref: '#/components/schemas/AchievementGameModeData' + general: + $ref: '#/components/schemas/AchievementGameModeData' + gingerbread: + $ref: '#/components/schemas/AchievementGameModeData' + halloween2017: + $ref: '#/components/schemas/AchievementGameModeData' + housing: + $ref: '#/components/schemas/AchievementGameModeData' + murdermystery: + $ref: '#/components/schemas/AchievementGameModeData' + paintball: + $ref: '#/components/schemas/AchievementGameModeData' + pit: + $ref: '#/components/schemas/AchievementGameModeData' + quake: + $ref: '#/components/schemas/AchievementGameModeData' + skyblock: + $ref: '#/components/schemas/AchievementGameModeData' + skyclash: + $ref: '#/components/schemas/AchievementGameModeData' + skywars: + $ref: '#/components/schemas/AchievementGameModeData' + speeduhc: + $ref: '#/components/schemas/AchievementGameModeData' + summer: + $ref: '#/components/schemas/AchievementGameModeData' + supersmash: + $ref: '#/components/schemas/AchievementGameModeData' + tntgames: + $ref: '#/components/schemas/AchievementGameModeData' + truecombat: + $ref: '#/components/schemas/AchievementGameModeData' + uhc: + $ref: '#/components/schemas/AchievementGameModeData' + vampirez: + $ref: '#/components/schemas/AchievementGameModeData' + walls: + $ref: '#/components/schemas/AchievementGameModeData' + walls3: + $ref: '#/components/schemas/AchievementGameModeData' + warlords: + $ref: '#/components/schemas/AchievementGameModeData' + additionalProperties: + $ref: '#/components/schemas/AchievementGameModeData' + required: + - arcade + - arena + - bedwars + - blitz + - buildbattle + - christmas2017 + - copsandcrims + - duels + - easter + - general + - gingerbread + - halloween2017 + - housing + - murdermystery + - paintball + - pit + - quake + - skyblock + - skyclash + - skywars + - speeduhc + - summer + - supersmash + - tntgames + - truecombat + - uhc + - vampirez + - walls + - walls3 + - warlords + required: + - achievements + AchievementGameModeData: + type: object + description: The game mode's achievement data. + properties: + one_time: + type: object + description: | + Any one off achievements, each property's key is the name used in data, and the proper name is stored in the "name" property. + All objects contain the name, points awarded, and description. Some contain a legacy boolean and others might contain percentage of who has unlocked them. + additionalProperties: + type: object + properties: + name: + type: string + description: + type: string + points: + type: number + secret: + type: boolean + legacy: + type: boolean + gamePercentUnlocked: + type: number + globalPercentUnlocked: + type: number + required: + - name + - description + - points + tiered: + type: object + description: | + Any tiered achievements, each property's key is the name used in data, and the proper name is stored in the "name" property. + All objects contain the name, description, and achievement tiers. Some contain a legacy boolean. + The achievement tiers array contains the points earned for each tier, and additional data. + additionalProperties: + type: object + properties: + name: + type: string + description: + type: string + legacy: + type: boolean + tiers: + type: array + items: + type: object + properties: + tier: + type: number + points: + type: number + amount: + type: number + required: + - tier + - points + - amount + required: + - name + - description + - tiers + total_points: + description: Total earnable achievement points in this game mode. + type: number + total_legacy_points: + description: Total earnable _legacy_ achievement points in this game mode. + type: number + required: + - one_time + - tiered + - total_points + - total_legacy_points + ChallengesResourceResponse: + allOf: + - $ref: '#/components/schemas/ResourcesResponse' + - type: object + properties: + challenges: + type: object + properties: + arcade: + $ref: '#/components/schemas/ChallengeData' + arena: + $ref: '#/components/schemas/ChallengeData' + bedwars: + $ref: '#/components/schemas/ChallengeData' + hungergames: + $ref: '#/components/schemas/ChallengeData' + buildbattle: + $ref: '#/components/schemas/ChallengeData' + truecombat: + $ref: '#/components/schemas/ChallengeData' + duels: + $ref: '#/components/schemas/ChallengeData' + mcgo: + $ref: '#/components/schemas/ChallengeData' + murdermystery: + $ref: '#/components/schemas/ChallengeData' + paintball: + $ref: '#/components/schemas/ChallengeData' + quake: + $ref: '#/components/schemas/ChallengeData' + skyclash: + $ref: '#/components/schemas/ChallengeData' + skywars: + $ref: '#/components/schemas/ChallengeData' + supersmash: + $ref: '#/components/schemas/ChallengeData' + speeduhc: + $ref: '#/components/schemas/ChallengeData' + gingerbread: + $ref: '#/components/schemas/ChallengeData' + tntgames: + $ref: '#/components/schemas/ChallengeData' + uhc: + $ref: '#/components/schemas/ChallengeData' + vampirez: + $ref: '#/components/schemas/ChallengeData' + walls3: + $ref: '#/components/schemas/ChallengeData' + walls: + $ref: '#/components/schemas/ChallengeData' + battleground: + $ref: '#/components/schemas/ChallengeData' + additionalProperties: + $ref: '#/components/schemas/ChallengeData' + required: + - arcade + - arena + - bedwars + - hungergames + - buildbattle + - truecombat + - duels + - mcgo + - murdermystery + - paintball + - quake + - skyclash + - skywars + - supersmash + - speeduhc + - gingerbread + - tntgames + - uhc + - vampirez + - walls3 + - walls + - battleground + required: + - challenges + ChallengeData: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + rewards: + type: array + items: + type: object + properties: + type: + type: string + amount: + type: number + required: + - type + - amount + required: + - id + - name + - rewards + QuestsResourceResponse: + allOf: + - $ref: '#/components/schemas/ResourcesResponse' + - type: object + properties: + quests: + type: object + properties: + quake: + $ref: '#/components/schemas/QuestDataArray' + walls: + $ref: '#/components/schemas/QuestDataArray' + paintball: + $ref: '#/components/schemas/QuestDataArray' + hungergames: + $ref: '#/components/schemas/QuestDataArray' + tntgames: + $ref: '#/components/schemas/QuestDataArray' + vampirez: + $ref: '#/components/schemas/QuestDataArray' + walls3: + $ref: '#/components/schemas/QuestDataArray' + arcade: + $ref: '#/components/schemas/QuestDataArray' + arena: + $ref: '#/components/schemas/QuestDataArray' + uhc: + $ref: '#/components/schemas/QuestDataArray' + mcgo: + $ref: '#/components/schemas/QuestDataArray' + battleground: + $ref: '#/components/schemas/QuestDataArray' + supersmash: + $ref: '#/components/schemas/QuestDataArray' + gingerbread: + $ref: '#/components/schemas/QuestDataArray' + skywars: + $ref: '#/components/schemas/QuestDataArray' + truecombat: + $ref: '#/components/schemas/QuestDataArray' + skyclash: + $ref: '#/components/schemas/QuestDataArray' + prototype: + $ref: '#/components/schemas/QuestDataArray' + bedwars: + $ref: '#/components/schemas/QuestDataArray' + murdermystery: + $ref: '#/components/schemas/QuestDataArray' + buildbattle: + $ref: '#/components/schemas/QuestDataArray' + duels: + $ref: '#/components/schemas/QuestDataArray' + additionalProperties: + $ref: '#/components/schemas/QuestDataArray' + required: + - quake + - walls + - paintball + - hungergames + - tntgames + - vampirez + - walls3 + - arcade + - arena + - uhc + - mcgo + - battleground + - supersmash + - gingerbread + - skywars + - truecombat + - skyclash + - prototype + - bedwars + - murdermystery + - buildbattle + - duels + required: + - quests + QuestDataArray: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + rewards: + type: array + items: + type: object + properties: + type: + type: string + amount: + type: number + package: + type: string + required: + - type + objectives: + type: array + items: + type: object + properties: + id: + type: string + type: + type: string + integer: + type: number + required: + - id + - type + requirements: + type: array + items: + type: object + properties: + type: + type: string + required: + - type + description: + type: string + required: + - id + - name + - rewards + - objectives + - requirements + - description + GuildsAchievementsResourceResponse: + allOf: + - $ref: '#/components/schemas/ResourcesResponse' + - type: object + properties: + one_time: + type: object + description: An empty object at this time. We can probably assume in the future it may contain data not unlike the normal /resources/achievements endpoint. + tiered: + type: object + properties: + PRESTIGE: + $ref: '#/components/schemas/GuildsTieredAchievementsData' + EXPERIENCE_KINGS: + $ref: '#/components/schemas/GuildsTieredAchievementsData' + WINNERS: + $ref: '#/components/schemas/GuildsTieredAchievementsData' + ONLINE_PLAYERS: + $ref: '#/components/schemas/GuildsTieredAchievementsData' + additionalProperties: + $ref: '#/components/schemas/GuildsTieredAchievementsData' + required: + - PRESTIGE + - EXPERIENCE_KINGS + - WINNERS + - ONLINE_PLAYERS + required: + - one_time + - tiered + GuildsTieredAchievementsData: + type: object + properties: + name: + type: string + description: + type: string + tiers: + type: array + items: + type: object + properties: + tier: + type: number + amount: + type: number + required: + - tier + - amount + required: + - name + - description + - tiers + GuildsPermissionsResourceResponse: + allOf: + - $ref: '#/components/schemas/ResourcesResponse' + - type: object + properties: + permissions: + type: array + items: + type: object + properties: + en_us: + type: object + properties: + name: + type: string + description: + type: string + item: + type: object + properties: + name: + type: string + required: + - name + required: + - name + - description + - item + required: + - en_us + required: + - permissions + SkyBlockCollectionsResourcesResponse: + allOf: + - $ref: '#/components/schemas/ResourcesResponse' + - type: object + properties: + version: + type: string + description: SkyBlock version this resource applies to. + collections: + $ref: '#/components/schemas/SkyBlockResourcesParentCollections' + required: + - success + - lastUpdated + - version + - collections + SkyBlockResourcesParentCollections: + type: object + description: Objects for each individual parent collection (currently FARMING, MINING, COMBAT, FORAGING, FISHING). + properties: + FARMING: + $ref: '#/components/schemas/SkyBlockResourcesParentCollection' + MINING: + $ref: '#/components/schemas/SkyBlockResourcesParentCollection' + COMBAT: + $ref: '#/components/schemas/SkyBlockResourcesParentCollection' + FORAGING: + $ref: '#/components/schemas/SkyBlockResourcesParentCollection' + FISHING: + $ref: '#/components/schemas/SkyBlockResourcesParentCollection' + required: + - FARMING + - MINING + - COMBAT + - FORAGING + - FISHING + additionalProperties: + $ref: '#/components/schemas/SkyBlockResourcesParentCollection' + SkyBlockResourcesParentCollection: + type: object + properties: + name: + type: string + description: Name of the collection group. + items: + type: object + description: Objects for each individual collection within the parent (e.g. WHEAT, SAND). + additionalProperties: + $ref: '#/components/schemas/SkyBlockResourcesCollection' + required: + - name + - items + SkyBlockResourcesCollection: + type: object + properties: + name: + type: string + description: Name of the collection. + maxTiers: + type: integer + description: The maximum tier of this collection. + tiers: + type: array + items: + $ref: '#/components/schemas/SkyBlockResourcesCollectionTier' + required: + - name + - maxTiers + - tiers + SkyBlockResourcesCollectionTier: + type: object + description: Individual tier within the collection. + properties: + tier: + type: integer + description: The collection tier this applies to. + amountRequired: + type: integer + description: The amount of the collection resource required to unlock this. + unlocks: + type: array + description: An array of strings describing the individual unlocks of this collection. + items: + type: string + SkyBlockSkillsResourcesResponse: + allOf: + - $ref: '#/components/schemas/ResourcesResponse' + - type: object + properties: + version: + type: string + description: SkyBlock version this resource applies to. + collections: + $ref: '#/components/schemas/SkyBlockResourcesSkills' + required: + - success + - lastUpdated + - version + - collections + SkyBlockResourcesSkills: + type: object + description: Objects for each skill. + properties: + FARMING: + $ref: '#/components/schemas/SkyBlockResourcesSkill' + MINING: + $ref: '#/components/schemas/SkyBlockResourcesSkill' + COMBAT: + $ref: '#/components/schemas/SkyBlockResourcesSkill' + DUNGEONEERING: + $ref: '#/components/schemas/SkyBlockResourcesSkill' + FORAGING: + $ref: '#/components/schemas/SkyBlockResourcesSkill' + FISHING: + $ref: '#/components/schemas/SkyBlockResourcesSkill' + ENCHANTING: + $ref: '#/components/schemas/SkyBlockResourcesSkill' + ALCHEMY: + $ref: '#/components/schemas/SkyBlockResourcesSkill' + CARPENTRY: + $ref: '#/components/schemas/SkyBlockResourcesSkill' + RUNECRAFTING: + $ref: '#/components/schemas/SkyBlockResourcesSkill' + TAMING: + $ref: '#/components/schemas/SkyBlockResourcesSkill' + required: + - FARMING + - MINING + - COMBAT + - DUNGEONEERING + - FORAGING + - FISHING + - ENCHANTING + - ALCHEMY + - CARPENTRY + - RUNECRAFTING + - TAMING + additionalProperties: + $ref: '#/components/schemas/SkyBlockResourcesSkill' + SkyBlockResourcesSkill: + type: object + properties: + name: + type: string + description: Name of the skill. + description: + type: string + description: Description for the skill. + maxLevel: + type: integer + description: The max attainable level for the skill. + levels: + type: array + description: Array of skills. + items: + $ref: '#/components/schemas/SkyBlockResourcesSkillLevel' + required: + - name + - description + - maxLevel + - levels + SkyBlockResourcesSkillLevel: + type: object + properties: + level: + type: integer + description: The skill level this applies to. + totalExpRequired: + type: integer + description: The amount of EXP required to reach this level. + unlocks: + type: array + description: An array of strings describing what this skill unlocks. + items: + type: string + description: An individual unlock. + required: + - level + - totalExpRequired + - unlocks + SkyBlockAuctionResponse: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + auctions: + type: array + items: + allOf: + - $ref: '#/components/schemas/SkyBlockAuction' + - type: object + properties: + _id: + type: string + item_bytes: + type: object + properties: + type: + type: integer + data: + description: Base64 encoded NBT data for the item. + type: string + required: + - type + - data + required: + - _id + - item_bytes + required: + - auctions + SkyBlockAuctionsResponse: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + page: + type: number + totalPages: + type: number + totalAuctions: + type: number + lastUpdated: + type: number + auctions: + type: array + items: + allOf: + - $ref: '#/components/schemas/SkyBlockAuction' + - type: object + properties: + item_bytes: + description: Base64 encoded NBT data for the item. + type: string + required: + - item_bytes + required: + - page + - totalPages + - totalAuctions + - lastUpdated + - auctions + SkyBlockAuction: + type: object + properties: + uuid: + type: string + auctioneer: + type: string + profile_id: + type: string + coop: + type: array + items: + type: string + start: + type: number + end: + type: number + item_name: + type: string + item_lore: + type: string + extra: + type: string + category: + type: string + tier: + type: string + starting_bid: + type: number + claimed: + type: boolean + claimed_bidders: + type: array + items: + description: Minecraft UUID of the person who claimed the auction. + type: string + highest_bid_amount: + type: number + bids: + type: array + items: + type: object + properties: + auction_id: + description: UUID of the auction. + type: string + bidder: + description: Minecraft UUID of the bidder. + type: string + profile_id: + description: The Hypixel SkyBlock profile ID of the profile the bidder was on when they placed the bid. + type: string + amount: + description: The amount in coins the bid is for. + type: number + timestamp: + description: Unix timestamp the bid was placed. + type: number + required: + - auction_id + - bidder + - amount + - timestamp + bin: + type: boolean + required: + - uuid + - auctioneer + - profile_id + - coop + - start + - end + - item_name + - item_lore + - extra + - category + - tier + - starting_bid + - claimed + - claimed_bidders + - highest_bid_amount + - bids + SkyBlockAuctionsEndedResponse: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + lastUpdated: + type: number + auctions: + type: array + items: + type: object + properties: + auction_id: + type: string + description: Unique ID associated with the auction. + seller: + type: string + description: Minecraft UUID of the seller. + seller_profile: + type: string + description: SkyBlock profile ID of the seller. + buyer: + type: string + description: Minecraft UUID of the buyer. + timestamp: + type: number + description: Auction end timestamp. + price: + type: number + description: Coins the buyer spent. + bin: + type: boolean + description: Whether or not it was a buy it now auction. + item_bytes: + description: Base64 encoded NBT data for the item. + type: string + required: + - auction_id + - seller + - seller_profile + - buyer + - timestamp + - price + - bin + - item_bytes + required: + - lastUpdated + - auctions + SkyBlockBazaarResponse: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + lastUpdated: + type: number + products: + type: object + properties: + ANCIENT_CLAW: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + BAZAAR_COOKIE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + BLAZE_ROD: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + BLESSED_BAIT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + BLUE_SHARK_TOOTH: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + BONE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + BOOSTER_COOKIE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + BROWN_MUSHROOM: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + CACTUS: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + CARROT_BAIT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + CARROT_ITEM: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + CATALYST: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + CLAY_BALL: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + COAL: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + COBBLESTONE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + COMPACTOR: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + DAEDALUS_STICK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + DARK_BAIT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + DIAMOND: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ECTOPLASM: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + EMERALD: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_ACACIA_LOG: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_ANCIENT_CLAW: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_BAKED_POTATO: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_BIRCH_LOG: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_BLAZE_POWDER: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_BLAZE_ROD: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_BONE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_BONE_BLOCK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_BREAD: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_BROWN_MUSHROOM: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_CACTUS: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_CACTUS_GREEN: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_CAKE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_CARROT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_CARROT_ON_A_STICK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_CARROT_STICK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_CHARCOAL: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_CLAY_BALL: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_CLOWNFISH: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_COAL: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_COAL_BLOCK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_COBBLESTONE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_COCOA: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_COOKED_FISH: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_COOKED_MUTTON: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_COOKED_SALMON: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_COOKIE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_DARK_OAK_LOG: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_DIAMOND: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_DIAMOND_BLOCK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_EGG: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_EMERALD: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_EMERALD_BLOCK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_ENDER_PEARL: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_ENDSTONE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_EYE_OF_ENDER: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_FEATHER: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_FERMENTED_SPIDER_EYE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_FIREWORK_ROCKET: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_FLINT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_GHAST_TEAR: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_GLISTERING_MELON: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_GLOWSTONE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_GLOWSTONE_DUST: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_GOLD: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_GOLD_BLOCK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_GOLDEN_CARROT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_GRILLED_PORK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_GUNPOWDER: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_HAY_BLOCK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_HUGE_MUSHROOM_1: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_HUGE_MUSHROOM_2: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_ICE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_INK_SACK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_IRON: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_IRON_BLOCK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_JUNGLE_LOG: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_LAPIS_LAZULI: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_LAPIS_LAZULI_BLOCK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_LAVA_BUCKET: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_LEATHER: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_MAGMA_CREAM: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_MELON: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_MELON_BLOCK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_MUTTON: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_NETHER_STALK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_OAK_LOG: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_OBSIDIAN: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_PACKED_ICE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_PAPER: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_PORK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_POTATO: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_PRISMARINE_CRYSTALS: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_PRISMARINE_SHARD: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_PUFFERFISH: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_PUMPKIN: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_QUARTZ: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_QUARTZ_BLOCK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_RABBIT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_RABBIT_FOOT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_RABBIT_HIDE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_RAW_BEEF: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_RAW_CHICKEN: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_RAW_FISH: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_RAW_SALMON: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_RED_MUSHROOM: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_REDSTONE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_REDSTONE_BLOCK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_REDSTONE_LAMP: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_ROTTEN_FLESH: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_SAND: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_SEEDS: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_SHARK_FIN: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_SLIME_BALL: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_SLIME_BLOCK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_SNOW_BLOCK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_SPIDER_EYE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_SPONGE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_SPRUCE_LOG: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_STRING: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_SUGAR: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_SUGAR_CANE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_WATER_LILY: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENCHANTED_WET_SPONGE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENDER_PEARL: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ENDER_STONE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + FEATHER: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + FISH_BAIT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + FLINT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + FOUL_FLESH: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + FUMING_POTATO_BOOK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + GHAST_TEAR: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + GLOWSTONE_DUST: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + GOLD_INGOT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + GOLDEN_TOOTH: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + GRAVEL: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + GREAT_WHITE_SHARK_TOOTH: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + GREEN_CANDY: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + GREEN_GIFT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + GRIFFIN_FEATHER: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + HAMSTER_WHEEL: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + HAY_BLOCK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + HOLY_FRAGMENT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + HOT_POTATO_BOOK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + HUGE_MUSHROOM_1: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + HUGE_MUSHROOM_2: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + HYPER_CATALYST: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ICE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ICE_BAIT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + INK_SACK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + INK_SACK:3: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + INK_SACK:4: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + IRON_INGOT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + JACOBS_TICKET: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + LEATHER: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + LIGHT_BAIT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + LOG: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + LOG:1: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + LOG:2: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + LOG:3: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + LOG_2: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + LOG_2:1: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + MAGMA_CREAM: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + MELON: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + MINNOW_BAIT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + MUTTON: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + NETHER_STALK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + NETHERRACK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + NURSE_SHARK_TOOTH: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + OBSIDIAN: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + OLD_FRAGMENT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + PACKED_ICE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + PORK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + POTATO_ITEM: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + PRISMARINE_CRYSTALS: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + PRISMARINE_SHARD: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + PROTECTOR_FRAGMENT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + PUMPKIN: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + PUMPKIN_GUTS: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + PURPLE_CANDY: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + QUARTZ: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + RABBIT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + RABBIT_FOOT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + RABBIT_HIDE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + RAW_BEEF: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + RAW_CHICKEN: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + RAW_FISH: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + RAW_FISH:1: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + RAW_FISH:2: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + RAW_FISH:3: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + RECOMBOBULATOR_3000: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + RED_GIFT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + RED_MUSHROOM: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + REDSTONE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + REFINED_MINERAL: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + REVENANT_FLESH: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + REVENANT_VISCERA: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + ROTTEN_FLESH: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SAND: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SEEDS: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SHARK_BAIT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SHARK_FIN: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SLIME_BALL: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SNOW_BALL: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SNOW_BLOCK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SOUL_FRAGMENT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SPIDER_EYE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SPIKED_BAIT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SPONGE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SPOOKY_BAIT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SPOOKY_SHARD: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + STOCK_OF_STONKS: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + STRING: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + STRONG_FRAGMENT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SUGAR_CANE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SULPHUR: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SUMMONING_EYE: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SUPER_COMPACTOR_3000: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SUPER_EGG: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + SUPERIOR_FRAGMENT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + TARANTULA_SILK: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + TARANTULA_WEB: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + TIGER_SHARK_TOOTH: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + UNSTABLE_FRAGMENT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + WATER_LILY: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + WEREWOLF_SKIN: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + WHALE_BAIT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + WHEAT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + WHITE_GIFT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + WISE_FRAGMENT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + WOLF_TOOTH: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + YOUNG_FRAGMENT: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + additionalProperties: + $ref: '#/components/schemas/SkyBlockBazaarProduct' + required: + - ANCIENT_CLAW + - BAZAAR_COOKIE + - BLAZE_ROD + - BLESSED_BAIT + - BLUE_SHARK_TOOTH + - BONE + - BOOSTER_COOKIE + - BROWN_MUSHROOM + - CACTUS + - CARROT_BAIT + - CARROT_ITEM + - CATALYST + - CLAY_BALL + - COAL + - COBBLESTONE + - COMPACTOR + - DAEDALUS_STICK + - DARK_BAIT + - DIAMOND + - ECTOPLASM + - EMERALD + - ENCHANTED_ACACIA_LOG + - ENCHANTED_ANCIENT_CLAW + - ENCHANTED_BAKED_POTATO + - ENCHANTED_BIRCH_LOG + - ENCHANTED_BLAZE_POWDER + - ENCHANTED_BLAZE_ROD + - ENCHANTED_BONE + - ENCHANTED_BONE_BLOCK + - ENCHANTED_BREAD + - ENCHANTED_BROWN_MUSHROOM + - ENCHANTED_CACTUS + - ENCHANTED_CACTUS_GREEN + - ENCHANTED_CAKE + - ENCHANTED_CARROT + - ENCHANTED_CARROT_ON_A_STICK + - ENCHANTED_CARROT_STICK + - ENCHANTED_CHARCOAL + - ENCHANTED_CLAY_BALL + - ENCHANTED_CLOWNFISH + - ENCHANTED_COAL + - ENCHANTED_COAL_BLOCK + - ENCHANTED_COBBLESTONE + - ENCHANTED_COCOA + - ENCHANTED_COOKED_FISH + - ENCHANTED_COOKED_MUTTON + - ENCHANTED_COOKED_SALMON + - ENCHANTED_COOKIE + - ENCHANTED_DARK_OAK_LOG + - ENCHANTED_DIAMOND + - ENCHANTED_DIAMOND_BLOCK + - ENCHANTED_EGG + - ENCHANTED_EMERALD + - ENCHANTED_EMERALD_BLOCK + - ENCHANTED_ENDER_PEARL + - ENCHANTED_ENDSTONE + - ENCHANTED_EYE_OF_ENDER + - ENCHANTED_FEATHER + - ENCHANTED_FERMENTED_SPIDER_EYE + - ENCHANTED_FIREWORK_ROCKET + - ENCHANTED_FLINT + - ENCHANTED_GHAST_TEAR + - ENCHANTED_GLISTERING_MELON + - ENCHANTED_GLOWSTONE + - ENCHANTED_GLOWSTONE_DUST + - ENCHANTED_GOLD + - ENCHANTED_GOLD_BLOCK + - ENCHANTED_GOLDEN_CARROT + - ENCHANTED_GRILLED_PORK + - ENCHANTED_GUNPOWDER + - ENCHANTED_HAY_BLOCK + - ENCHANTED_HUGE_MUSHROOM_1 + - ENCHANTED_HUGE_MUSHROOM_2 + - ENCHANTED_ICE + - ENCHANTED_INK_SACK + - ENCHANTED_IRON + - ENCHANTED_IRON_BLOCK + - ENCHANTED_JUNGLE_LOG + - ENCHANTED_LAPIS_LAZULI + - ENCHANTED_LAPIS_LAZULI_BLOCK + - ENCHANTED_LAVA_BUCKET + - ENCHANTED_LEATHER + - ENCHANTED_MAGMA_CREAM + - ENCHANTED_MELON + - ENCHANTED_MELON_BLOCK + - ENCHANTED_MUTTON + - ENCHANTED_NETHER_STALK + - ENCHANTED_OAK_LOG + - ENCHANTED_OBSIDIAN + - ENCHANTED_PACKED_ICE + - ENCHANTED_PAPER + - ENCHANTED_PORK + - ENCHANTED_POTATO + - ENCHANTED_PRISMARINE_CRYSTALS + - ENCHANTED_PRISMARINE_SHARD + - ENCHANTED_PUFFERFISH + - ENCHANTED_PUMPKIN + - ENCHANTED_QUARTZ + - ENCHANTED_QUARTZ_BLOCK + - ENCHANTED_RABBIT + - ENCHANTED_RABBIT_FOOT + - ENCHANTED_RABBIT_HIDE + - ENCHANTED_RAW_BEEF + - ENCHANTED_RAW_CHICKEN + - ENCHANTED_RAW_FISH + - ENCHANTED_RAW_SALMON + - ENCHANTED_RED_MUSHROOM + - ENCHANTED_REDSTONE + - ENCHANTED_REDSTONE_BLOCK + - ENCHANTED_REDSTONE_LAMP + - ENCHANTED_ROTTEN_FLESH + - ENCHANTED_SAND + - ENCHANTED_SEEDS + - ENCHANTED_SHARK_FIN + - ENCHANTED_SLIME_BALL + - ENCHANTED_SLIME_BLOCK + - ENCHANTED_SNOW_BLOCK + - ENCHANTED_SPIDER_EYE + - ENCHANTED_SPONGE + - ENCHANTED_SPRUCE_LOG + - ENCHANTED_STRING + - ENCHANTED_SUGAR + - ENCHANTED_SUGAR_CANE + - ENCHANTED_WATER_LILY + - ENCHANTED_WET_SPONGE + - ENDER_PEARL + - ENDER_STONE + - FEATHER + - FISH_BAIT + - FLINT + - FOUL_FLESH + - FUMING_POTATO_BOOK + - GHAST_TEAR + - GLOWSTONE_DUST + - GOLD_INGOT + - GOLDEN_TOOTH + - GRAVEL + - GREAT_WHITE_SHARK_TOOTH + - GREEN_CANDY + - GREEN_GIFT + - GRIFFIN_FEATHER + - HAMSTER_WHEEL + - HAY_BLOCK + - HOLY_FRAGMENT + - HOT_POTATO_BOOK + - HUGE_MUSHROOM_1 + - HUGE_MUSHROOM_2 + - HYPER_CATALYST + - ICE + - ICE_BAIT + - INK_SACK + - INK_SACK:3 + - INK_SACK:4 + - IRON_INGOT + - JACOBS_TICKET + - LEATHER + - LIGHT_BAIT + - LOG + - LOG:1 + - LOG:2 + - LOG:3 + - LOG_2 + - LOG_2:1 + - MAGMA_CREAM + - MELON + - MINNOW_BAIT + - MUTTON + - NETHER_STALK + - NETHERRACK + - NURSE_SHARK_TOOTH + - OBSIDIAN + - OLD_FRAGMENT + - PACKED_ICE + - PORK + - POTATO_ITEM + - PRISMARINE_CRYSTALS + - PRISMARINE_SHARD + - PROTECTOR_FRAGMENT + - PUMPKIN + - PUMPKIN_GUTS + - PURPLE_CANDY + - QUARTZ + - RABBIT + - RABBIT_FOOT + - RABBIT_HIDE + - RAW_BEEF + - RAW_CHICKEN + - RAW_FISH + - RAW_FISH:1 + - RAW_FISH:2 + - RAW_FISH:3 + - RECOMBOBULATOR_3000 + - RED_GIFT + - RED_MUSHROOM + - REDSTONE + - REFINED_MINERAL + - REVENANT_FLESH + - REVENANT_VISCERA + - ROTTEN_FLESH + - SAND + - SEEDS + - SHARK_BAIT + - SHARK_FIN + - SLIME_BALL + - SNOW_BALL + - SNOW_BLOCK + - SOUL_FRAGMENT + - SPIDER_EYE + - SPIKED_BAIT + - SPONGE + - SPOOKY_BAIT + - SPOOKY_SHARD + - STOCK_OF_STONKS + - STRING + - STRONG_FRAGMENT + - SUGAR_CANE + - SULPHUR + - SUMMONING_EYE + - SUPER_COMPACTOR_3000 + - SUPER_EGG + - SUPERIOR_FRAGMENT + - TARANTULA_SILK + - TARANTULA_WEB + - TIGER_SHARK_TOOTH + - UNSTABLE_FRAGMENT + - WATER_LILY + - WEREWOLF_SKIN + - WHALE_BAIT + - WHEAT + - WHITE_GIFT + - WISE_FRAGMENT + - WOLF_TOOTH + - YOUNG_FRAGMENT + required: + - lastUpdated + - products + SkyBlockBazaarProduct: + type: object + properties: + product_id: + type: string + sell_summary: + type: array + items: + type: object + properties: + amount: + type: number + pricePerUnit: + type: number + orders: + type: number + required: + - amount + - pricePerUnit + - orders + buy_summary: + type: array + items: + type: object + properties: + amount: + type: number + pricePerUnit: + type: number + orders: + type: number + required: + - amount + - pricePerUnit + - orders + quick_status: + type: object + properties: + productId: + type: string + sellPrice: + type: number + sellVolume: + type: number + sellMovingWeek: + type: number + sellOrders: + type: number + buyPrice: + type: number + buyVolume: + type: number + buyMovingWeek: + type: number + buyOrders: + type: number + required: + - productId + - sellPrice + - sellVolume + - sellMovingWeek + - sellOrders + - buyPrice + - buyVolume + - buyMovingWeek + - buyOrders + required: + - product_id + - sell_summary + - buy_summary + - quick_status + NewsResponse: + allOf: + - $ref: '#/components/schemas/ApiSuccess' + - type: object + properties: + success: + type: boolean + items: + $ref: '#/components/schemas/NewsEntries' + required: + - success + - items + NewsEntries: + type: array + items: + $ref: '#/components/schemas/NewsEntry' + NewsEntry: + type: object + properties: + item: + $ref: '#/components/schemas/NewsEntryItem' + link: + type: string + text: + type: string + title: + type: string + required: + - item + - link + - text + - title + NewsEntryItem: + type: object + properties: + material: + type: string + data: + type: integer + required: + - material + Session: + type: object + properties: + online: + type: boolean + example: true + gameType: + type: string + example: SKYWARS + mode: + type: string + example: ranked_normal + map: + type: string + example: Agni Temple + required: + - online + SkyBlockProfile: + type: object + nullable: true + properties: + autodelete: + type: boolean + banking: + $ref: '#/components/schemas/SkyBlockProfileBanking' + community_upgrades: + $ref: '#/components/schemas/SkyBlockProfileCommunityUpgrades' + game_mode: + description: Often this field is "ironman". + type: string + members: + type: object + description: The members of this profile. The object key is their Minecraft UUID. + additionalProperties: + $ref: '#/components/schemas/SkyBlockProfileMember' + profile_id: + type: string + required: + - cute_name + - members + - profile_id + SkyBlockProfileCuteName: + allOf: + - $ref: '#/components/schemas/SkyBlockProfile' + - type: object + properties: + cute_name: + description: Cute name of the profile. e.g. "Strawberry" + example: Strawberry + type: string + required: + - cute_name + SkyBlockProfileBanking: + type: object + description: Profile banking information. Only shows up if their banking API is enabled. + properties: + balance: + type: number + transactions: + type: array + items: + $ref: '#/components/schemas/SkyBlockProfileBankingTransaction' + required: + - balance + - transactions + SkyBlockProfileBankingTransaction: + type: object + properties: + action: + type: string + amount: + type: number + initiator_name: + type: string + timestamp: + type: number + required: + - action + - amount + - initiator_name + - timestamp + SkyBlockProfileCommunityUpgrades: + type: object + properties: + currently_upgrading: + $ref: '#/components/schemas/SkyBlockProfileCommunityUpgradesCurrent' + upgrade_states: + type: array + items: + $ref: '#/components/schemas/SkyBlockProfileCommunityUpgradesState' + required: + - currently_upgrading + SkyBlockProfileCommunityUpgradesCurrent: + type: object + properties: + new_tier: + type: number + start_ms: + description: Timestamp of when it was started. + type: number + upgrade: + type: string + who_started: + description: Minecraft UUID of the player that started this. + type: string + required: + - new_tier + - start_ms + - upgrade + - who_started + SkyBlockProfileCommunityUpgradesState: + type: object + properties: + claimed_by: + description: Minecraft UUID of the player that claimed this. + type: string + claimed_ms: + description: Timestamp of when it was claimed. + type: number + fasttracked: + type: boolean + started_by: + description: Minecraft UUID of the player that started this. + type: string + started_ms: + description: Timestamp of when it was started. + type: number + tier: + type: number + upgrade: + type: string + required: + - claimed_by + - claimed_ms + - fasttracked + - started_by + - started_ms + - tier + - upgrade + SkyBlockProfileMember: + allOf: + - $ref: '#/components/schemas/SkyBlockProfileMemberBase' + - $ref: '#/components/schemas/SkyBlockProfileCollectionsAPI' + - $ref: '#/components/schemas/SkyBlockProfileInventoryAPI' + - $ref: '#/components/schemas/SkyBlockProfileSkillsAPI' + SkyBlockProfileMemberBase: + type: object + properties: + achievement_spawned_island_types: + type: array + description: An array of values, each value describing an island that has been spawned by the member. e.g. "Pond Island" + items: + type: string + coin_purse: + type: number + coop_invitation: + $ref: '#/components/schemas/SkyBlockProfileCoopInvitation' + crafted_generators: + type: array + description: An array of values, each value describing a minion and it's tier that the player has upgraded / crafted. + items: + type: string + death_count: + type: number + dungeons: + type: object + properties: + dungeon_journal: + $ref: '#/components/schemas/SkyBlockProfileDungeonJournal' + dungeon_types: + type: object + properties: + catacombs: + $ref: '#/components/schemas/SkyBlockProfileDungeonType' + additionalProperties: + $ref: '#/components/schemas/SkyBlockProfileDungeonType' + required: + - catacombs + dungeons_blah_blah: + $ref: '#/components/schemas/SkyBlockProfileDungeonBlahBlah' + player_classes: + type: object + properties: + archer: + $ref: '#/components/schemas/SkyBlockProfileDungeonClass' + berserk: + $ref: '#/components/schemas/SkyBlockProfileDungeonClass' + healer: + $ref: '#/components/schemas/SkyBlockProfileDungeonClass' + mage: + $ref: '#/components/schemas/SkyBlockProfileDungeonClass' + tank: + $ref: '#/components/schemas/SkyBlockProfileDungeonClass' + additionalProperties: + $ref: '#/components/schemas/SkyBlockProfileDungeonClass' + required: + - archer + - berserk + - healer + - mage + - tank + selected_dungeon_class: + type: string + required: + - dungeon_journal + - dungeon_types + - player_classes + fairy_exchanges: + type: number + fairy_souls: + type: number + fairy_souls_collected: + type: number + first_join: + type: number + first_join_hub: + type: number + fishing_treasure_caught: + type: number + inv_armor: + $ref: '#/components/schemas/SkyBlockProfileInventoryData' + last_death: + type: number + last_save: + type: number + objectives: + $ref: '#/components/schemas/SkyBlockProfileObjectives' + pets: + $ref: '#/components/schemas/SkyBlockProfilePets' + quests: + $ref: '#/components/schemas/SkyBlockProfileQuests' + slayer_bosses: + $ref: '#/components/schemas/SkyBlockProfileSlayerBosses' + slayer_quest: + $ref: '#/components/schemas/SkyBlockProfileSlayerQuest' + stats: + $ref: '#/components/schemas/SkyBlockProfileStats' + tutorial: + type: array + items: + type: string + visited_zones: + type: array + items: + type: string + required: + - coin_purse + - first_join + - first_join_hub + - inv_armor + - last_death + - last_save + - objectives + - quests + - stats + - tutorial + - visited_zones + SkyBlockProfileCollectionsAPI: + type: object + properties: + collection: + $ref: '#/components/schemas/SkyBlockProfileCollection' + unlocked_coll_tiers: + type: array + description: An array of values, each value describing a collection tier that has been unlocked. + items: + type: string + SkyBlockProfileInventoryData: + type: object + properties: + data: + type: string + type: + type: number + required: + - data + - type + SkyBlockProfileInventoryAPI: + type: object + properties: + candy_inventory_contents: + $ref: '#/components/schemas/SkyBlockProfileInventoryData' + ender_chest_contents: + $ref: '#/components/schemas/SkyBlockProfileInventoryData' + fishing_bag: + $ref: '#/components/schemas/SkyBlockProfileInventoryData' + inv_contents: + $ref: '#/components/schemas/SkyBlockProfileInventoryData' + potion_bag: + $ref: '#/components/schemas/SkyBlockProfileInventoryData' + quiver: + $ref: '#/components/schemas/SkyBlockProfileInventoryData' + sacks_counts: + $ref: '#/components/schemas/SkyBlockProfileSacksCounts' + talisman_bag: + $ref: '#/components/schemas/SkyBlockProfileInventoryData' + wardrobe_contents: + $ref: '#/components/schemas/SkyBlockProfileInventoryData' + wardrobe_equipped_slot: + type: number + SkyBlockProfileSkillsAPI: + type: object + properties: + experience_skill_alchemy: + type: number + experience_skill_carpentry: + type: number + experience_skill_combat: + type: number + experience_skill_enchanting: + type: number + experience_skill_farming: + type: number + experience_skill_fishing: + type: number + experience_skill_foraging: + type: number + experience_skill_mining: + type: number + experience_skill_runecrafting: + type: number + experience_skill_taming: + type: number + SkyBlockProfileSacksCounts: + type: object + description: The contents of their sacks. + properties: + BLAZE_ROD: + type: number + BONE: + type: number + CACTUS: + type: number + CARROT_ITEM: + type: number + CLAY_BALL: + type: number + COAL: + type: number + COBBLESTONE: + type: number + DIAMOND: + type: number + DUNGEON_TRAP: + type: number + EMERALD: + type: number + ENDER_PEARL: + type: number + ENDER_STONE: + type: number + GHAST_TEAR: + type: number + GLOWSTONE_DUST: + type: number + GOLD_INGOT: + type: number + GRAVEL: + type: number + ICE: + type: number + INK_SACK: + type: number + 'INK_SACK:3': + type: number + 'INK_SACK:4': + type: number + IRON_INGOT: + type: number + LEATHER: + type: number + LOG: + type: number + 'LOG:1': + type: number + 'LOG:2': + type: number + 'LOG:3': + type: number + LOG_2: + type: number + 'LOG_2:1': + type: number + MAGMA_CREAM: + type: number + MELON: + type: number + MUSHROOM_COLLECTION: + type: number + MUTTON: + type: number + NETHERRACK: + type: number + NETHER_STALK: + type: number + OBSIDIAN: + type: number + PORK: + type: number + POTATO_ITEM: + type: number + PRISMARINE_CRYSTALS: + type: number + PRISMARINE_SHARD: + type: number + PUMPKIN: + type: number + QUARTZ: + type: number + RABBIT: + type: number + RAW_FISH: + type: number + 'RAW_FISH:1': + type: number + 'RAW_FISH:2': + type: number + 'RAW_FISH:3': + type: number + REDSTONE: + type: number + REVENANT_FLESH: + type: number + ROTTEN_FLESH: + type: number + SAND: + type: number + SEEDS: + type: number + SLIME_BALL: + type: number + SPIDER_EYE: + type: number + SPONGE: + type: number + STRING: + type: number + SUGAR_CANE: + type: number + SULPHUR: + type: number + TARANTULA_WEB: + type: number + WATER_LILY: + type: number + WHEAT: + type: number + WOLF_TOOTH: + type: number + additionalProperties: + type: number + SkyBlockProfileCollection: + type: object + description: Each property key is the collection's item, and the value is the XP. + properties: + BLAZE_ROD: + type: number + BONE: + type: number + CACTUS: + type: number + CARROT_ITEM: + type: number + CLAY_BALL: + type: number + COAL: + type: number + COBBLESTONE: + type: number + DIAMOND: + type: number + EMERALD: + type: number + ENCHANTED_CLAY_BALL: + type: number + ENCHANTED_DIAMOND: + type: number + ENDER_PEARL: + type: number + ENDER_STONE: + type: number + FEATHER: + type: number + GHAST_TEAR: + type: number + GLOWSTONE_DUST: + type: number + GOLD_INGOT: + type: number + GRAVEL: + type: number + ICE: + type: number + INK_SACK: + type: number + 'INK_SACK:3': + type: number + 'INK_SACK:4': + type: number + IRON_INGOT: + type: number + LEATHER: + type: number + LOG: + type: number + 'LOG:1': + type: number + 'LOG:2': + type: number + 'LOG:3': + type: number + LOG_2: + type: number + 'LOG_2:1': + type: number + MAGMA_CREAM: + type: number + MELON: + type: number + MUSHROOM_COLLECTION: + type: number + MUTTON: + type: number + NETHERRACK: + type: number + NETHER_STALK: + type: number + OBSIDIAN: + type: number + PORK: + type: number + POTATO_ITEM: + type: number + PRISMARINE_CRYSTALS: + type: number + PRISMARINE_SHARD: + type: number + PUMPKIN: + type: number + QUARTZ: + type: number + RABBIT: + type: number + RABBIT_HIDE: + type: number + RAW_CHICKEN: + type: number + RAW_FISH: + type: number + 'RAW_FISH:1': + type: number + 'RAW_FISH:2': + type: number + 'RAW_FISH:3': + type: number + REDSTONE: + type: number + ROTTEN_FLESH: + type: number + SAND: + type: number + SEEDS: + type: number + SLIME_BALL: + type: number + SNOW_BLOCK: + type: number + SPIDER_EYE: + type: number + SPONGE: + type: number + STRING: + type: number + SUGAR_CANE: + type: number + SULPHUR: + type: number + WATER_LILY: + type: number + WHEAT: + type: number + WOOL: + type: number + additionalProperties: + type: number + SkyBlockProfileCoopInvitation: + type: object + description: Coop invitation that the member accepted. + properties: + confirmed: + type: boolean + confirmed_timestamp: + description: The timestamp of when the player accepted the invite. + type: number + invited_by: + description: The Minecraft UUID of the player who invited them. + type: string + timestamp: + description: When the invitation was created. + type: number + required: + - invited_by + - timestamp + SkyBlockProfileDungeonJournal: + type: object + properties: + journal_entries: + type: object + properties: + expedition_volume_1: + $ref: '#/components/schemas/SkyBlockProfileDungeonJournalEntries' + expedition_volume_2: + $ref: '#/components/schemas/SkyBlockProfileDungeonJournalEntries' + karylles_diary: + $ref: '#/components/schemas/SkyBlockProfileDungeonJournalEntries' + the_study: + $ref: '#/components/schemas/SkyBlockProfileDungeonJournalEntries' + uncanny_remains: + $ref: '#/components/schemas/SkyBlockProfileDungeonJournalEntries' + additionalProperties: + $ref: '#/components/schemas/SkyBlockProfileDungeonJournalEntries' + SkyBlockProfileDungeonJournalEntries: + type: array + items: + type: number + SkyBlockProfileDungeonType: + type: object + properties: + best_runs: + type: object + description: The property key is the floor these run stats were achieved on. + additionalProperties: + $ref: '#/components/schemas/SkyBlockProfileDungeonTypeFloorRun' + best_score: + type: object + description: The property key is the floor number this score was achieved on. + additionalProperties: + type: number + experience: + type: number + description: The amount of exp this profile member has in this dungeon type. + fastest_time: + type: object + description: The property key is the floor number this time was achieved on. + additionalProperties: + type: number + fastest_time_s: + type: object + description: Fastest time for an S completion. The property key is the floor number this time was achieved on. + additionalProperties: + type: number + fastest_time_s_plus: + type: object + description: Fastest time for an S+ completion. The property key is the floor number this time was achieved on. + additionalProperties: + type: number + highest_tier_completed: + description: Highest dungeon tier the profile member has completed of this type. + type: number + mobs_killed: + type: object + description: The property key is the floor number these mobs were killed on. + additionalProperties: + type: number + most_damage_archer: + type: object + description: The most damage this profile member has dealt in a single run as an archer. The object key is the floor number. + additionalProperties: + type: number + most_damage_berserk: + type: object + description: The most damage this profile member has dealt in a single run as a berserker. The object key is the floor number. + additionalProperties: + type: number + most_damage_mage: + type: object + description: The most damage this profile member has dealt in a single run as a mage. The object key is the floor number. + additionalProperties: + type: number + most_damage_tank: + type: object + description: The most damage this profile member has dealt in a single run as a tank. The object key is the floor number. + additionalProperties: + type: number + most_healing: + type: object + description: The most healing this profile member has performed in a single run. The object key is the floor number. + additionalProperties: + type: number + most_mobs_killed: + type: object + description: The most mobs this profile member has killed in a single run. The object key is the floor number. + additionalProperties: + type: number + tier_completions: + type: object + description: The amount of times this profile member has completed each floor. The object key is the floor number. + additionalProperties: + type: number + times_played: + type: object + description: The amount of times this profile member has attempted each floor. The object key is the floor number. + additionalProperties: + type: number + watcher_kills: + type: object + description: The amount of times this profile member has killed the watcher. The object key is the floor number. + additionalProperties: + type: number + SkyBlockProfileDungeonTypeFloorRun: + type: array + items: + type: object + properties: + ally_healing: + type: number + damage_dealt: + type: number + damage_mitigated: + type: number + deaths: + type: number + dungeon_class: + type: string + elapsed_time: + type: number + mobs_killed: + type: number + score_bonus: + type: number + score_exploration: + type: number + score_skill: + type: number + score_speed: + type: number + secrets_found: + type: number + teammates: + type: array + items: + type: string + timestamp: + type: number + required: + - damage_dealt + - damage_mitigated + - deaths + - dungeon_class + - elapsed_time + - mobs_killed + - score_bonus + - score_exploration + - score_skill + - score_speed + - secrets_found + - teammates + - timestamp + SkyBlockProfileDungeonBlahBlah: + type: array + description: Array of values, each value describing a dungeon NPC the profile member has spoken to. + items: + type: string + SkyBlockProfileDungeonClass: + type: object + properties: + experience: + type: number + required: + - experience + SkyBlockProfileObjectives: + type: object + properties: + chop_tree: + $ref: '#/components/schemas/SkyBlockProfileObjective' + collect_birch_logs: + $ref: '#/components/schemas/SkyBlockProfileObjective' + collect_clay: + $ref: '#/components/schemas/SkyBlockProfileObjective' + collect_dark_oak_logs: + $ref: '#/components/schemas/SkyBlockProfileObjective' + collect_diamond: + allOf: + - $ref: '#/components/schemas/SkyBlockProfileObjective' + - type: object + properties: + DIAMOND: + type: boolean + collect_emerald: + allOf: + - $ref: '#/components/schemas/SkyBlockProfileObjective' + - type: object + properties: + EMERALD: + type: boolean + collect_end_stone: + allOf: + - $ref: '#/components/schemas/SkyBlockProfileObjective' + - type: object + properties: + ENDER_STONE: + type: boolean + collect_farm_animal_resources: + allOf: + - $ref: '#/components/schemas/SkyBlockProfileObjective' + - type: object + properties: + LEATHER: + type: boolean + PORK: + type: boolean + RAW_CHICKEN: + type: boolean + collect_farm_animal_resources_2: + allOf: + - $ref: '#/components/schemas/SkyBlockProfileObjective' + - type: object + properties: + MUTTON: + type: boolean + RABBIT: + type: boolean + collect_farming_resources: + allOf: + - $ref: '#/components/schemas/SkyBlockProfileObjective' + - type: object + properties: + CARROT_ITEM: + type: boolean + MELON: + type: boolean + POTATO_ITEM: + type: boolean + PUMPKIN: + type: boolean + collect_farming_resources_2: + allOf: + - $ref: '#/components/schemas/SkyBlockProfileObjective' + - type: object + properties: + CACTUS: + type: boolean + 'INK_SACK:3': + type: boolean + SUGAR_CANE: + type: boolean + collect_ingots: + allOf: + - $ref: '#/components/schemas/SkyBlockProfileObjective' + - type: object + properties: + GOLD_INGOT: + type: boolean + IRON_INGOT: + type: boolean + collect_lapis: + allOf: + - $ref: '#/components/schemas/SkyBlockProfileObjective' + - type: object + properties: + 'INK_SACK:4': + type: boolean + collect_log: + $ref: '#/components/schemas/SkyBlockProfileObjective' + collect_nether_resources: + allOf: + - $ref: '#/components/schemas/SkyBlockProfileObjective' + - type: object + properties: + BLAZE_ROD: + type: boolean + NETHER_STALK: + type: boolean + collect_nether_resources_2: + allOf: + - $ref: '#/components/schemas/SkyBlockProfileObjective' + - type: object + properties: + GLOWSTONE_DUST: + type: boolean + MAGMA_CREAM: + type: boolean + QUARTZ: + type: boolean + collect_obsidian: + allOf: + - $ref: '#/components/schemas/SkyBlockProfileObjective' + - type: object + properties: + OBSIDIAN: + type: boolean + collect_redstone: + allOf: + - $ref: '#/components/schemas/SkyBlockProfileObjective' + - type: object + properties: + REDSTONE: + type: boolean + collect_spider: + allOf: + - $ref: '#/components/schemas/SkyBlockProfileObjective' + - type: object + properties: + SPIDER_EYE: + type: boolean + STRING: + type: boolean + collect_wheat: + $ref: '#/components/schemas/SkyBlockProfileObjective' + collect_wool_carpenter: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_chicken_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_chicken_race_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_chicken_race_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_chicken_race_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_anything_no_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_anything_no_return_race_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_anything_no_return_race_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_anything_no_return_race_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_anything_with_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_no_abilities_no_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_no_abilities_no_return_race_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_no_abilities_no_return_race_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_no_abilities_no_return_race_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_no_abilities_with_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_no_pearls_no_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_no_pearls_no_return_race_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_no_pearls_no_return_race_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_no_pearls_no_return_race_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_no_pearls_with_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_no_pearls_with_return_race_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_nothing_no_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_nothing_no_return_race_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_nothing_no_return_race_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_nothing_no_return_race_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_crystal_core_nothing_with_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_end_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_end_race_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_end_race_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_end_race_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_anything_no_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_anything_no_return_race_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_anything_no_return_race_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_anything_no_return_race_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_anything_with_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_no_abilities_no_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_no_abilities_no_return_race_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_no_abilities_no_return_race_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_no_abilities_no_return_race_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_no_abilities_with_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_no_pearls_no_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_no_pearls_no_return_race_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_no_pearls_no_return_race_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_no_pearls_no_return_race_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_no_pearls_with_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_nothing_no_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_nothing_no_return_race_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_nothing_no_return_race_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_nothing_no_return_race_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_giant_mushroom_nothing_with_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_anything_no_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_anything_no_return_race_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_anything_no_return_race_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_anything_no_return_race_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_anything_with_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_no_abilities_no_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_no_abilities_no_return_race_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_no_abilities_no_return_race_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_no_abilities_no_return_race_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_no_abilities_with_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_no_pearls_no_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_no_pearls_no_return_race_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_no_pearls_no_return_race_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_no_pearls_no_return_race_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_no_pearls_with_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_nothing_no_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_nothing_no_return_race_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_nothing_no_return_race_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_nothing_no_return_race_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_precursor_ruins_nothing_with_return_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_woods_race_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_woods_race_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_woods_race_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + complete_the_woods_race_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + craft_wheat_minion: + $ref: '#/components/schemas/SkyBlockProfileObjective' + craft_wood_pickaxe: + $ref: '#/components/schemas/SkyBlockProfileObjective' + craft_workbench: + $ref: '#/components/schemas/SkyBlockProfileObjective' + deposit_coins: + $ref: '#/components/schemas/SkyBlockProfileObjective' + enchant_item: + $ref: '#/components/schemas/SkyBlockProfileObjective' + explore_hub: + $ref: '#/components/schemas/SkyBlockProfileObjective' + explore_village: + $ref: '#/components/schemas/SkyBlockProfileObjective' + fight_dragon: + $ref: '#/components/schemas/SkyBlockProfileObjective' + find_pickaxe: + $ref: '#/components/schemas/SkyBlockProfileObjective' + give_fairy_souls: + $ref: '#/components/schemas/SkyBlockProfileObjective' + give_pickaxe_lapis_miner: + $ref: '#/components/schemas/SkyBlockProfileObjective' + give_rick_ingots: + $ref: '#/components/schemas/SkyBlockProfileObjective' + increase_combat_skill: + $ref: '#/components/schemas/SkyBlockProfileObjective' + increase_combat_skill_5: + $ref: '#/components/schemas/SkyBlockProfileObjective' + increase_farming_skill: + $ref: '#/components/schemas/SkyBlockProfileObjective' + increase_farming_skill_5: + $ref: '#/components/schemas/SkyBlockProfileObjective' + increase_foraging_skill: + $ref: '#/components/schemas/SkyBlockProfileObjective' + increase_foraging_skill_5: + $ref: '#/components/schemas/SkyBlockProfileObjective' + increase_mining_skill: + $ref: '#/components/schemas/SkyBlockProfileObjective' + increase_mining_skill_5: + $ref: '#/components/schemas/SkyBlockProfileObjective' + kill_danger_mobs: + $ref: '#/components/schemas/SkyBlockProfileObjective' + mine_coal: + $ref: '#/components/schemas/SkyBlockProfileObjective' + paint_canvas: + $ref: '#/components/schemas/SkyBlockProfileObjective' + public_island: + $ref: '#/components/schemas/SkyBlockProfileObjective' + reach_diamond_reserve: + $ref: '#/components/schemas/SkyBlockProfileObjective' + reach_dragons_nest: + $ref: '#/components/schemas/SkyBlockProfileObjective' + reach_lapis_quarry: + $ref: '#/components/schemas/SkyBlockProfileObjective' + reach_obsidian_sanctuary: + $ref: '#/components/schemas/SkyBlockProfileObjective' + reach_pigmens_den: + $ref: '#/components/schemas/SkyBlockProfileObjective' + reach_slimehill: + $ref: '#/components/schemas/SkyBlockProfileObjective' + reforge_item: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_artist_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_artist_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_auction_master: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_banker: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_bartender: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_blacksmith: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_blacksmith_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_carpenter: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_charlie: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_charlie_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_elle: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_end_dealer: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_event_master: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_fairy: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_farmer: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_farmer_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_farmhand_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_farmhand_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_fisherman_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_fisherman_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_frosty: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guber_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guber_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guber_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guber_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guber_5: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guide: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_anything_no_return_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_anything_no_return_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_anything_no_return_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_anything_no_return_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_no_abilities_no_return_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_no_abilities_no_return_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_no_abilities_no_return_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_no_abilities_no_return_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_no_pearls_no_return_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_no_pearls_no_return_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_no_pearls_no_return_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_no_pearls_no_return_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_no_pearls_with_return_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_nothing_no_return_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_nothing_no_return_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_nothing_no_return_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_crystal_core_nothing_no_return_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_giant_mushroom_anything_no_return_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_giant_mushroom_anything_no_return_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_giant_mushroom_anything_no_return_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_giant_mushroom_anything_no_return_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_giant_mushroom_no_abilities_no_return_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_giant_mushroom_no_abilities_no_return_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_giant_mushroom_no_abilities_no_return_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_giant_mushroom_no_abilities_no_return_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_giant_mushroom_no_pearls_no_return_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_giant_mushroom_no_pearls_no_return_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_giant_mushroom_no_pearls_no_return_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_giant_mushroom_no_pearls_no_return_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_giant_mushroom_nothing_no_return_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_giant_mushroom_nothing_no_return_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_giant_mushroom_nothing_no_return_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_giant_mushroom_nothing_no_return_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_precursor_ruins_anything_no_return_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_precursor_ruins_anything_no_return_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_precursor_ruins_anything_no_return_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_precursor_ruins_anything_no_return_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_precursor_ruins_no_abilities_no_return_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_precursor_ruins_no_abilities_no_return_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_precursor_ruins_no_abilities_no_return_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_precursor_ruins_no_abilities_no_return_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_precursor_ruins_no_pearls_no_return_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_precursor_ruins_no_pearls_no_return_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_precursor_ruins_no_pearls_no_return_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_precursor_ruins_no_pearls_no_return_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_precursor_ruins_nothing_no_return_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_precursor_ruins_nothing_no_return_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_precursor_ruins_nothing_no_return_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_guildford_precursor_ruins_nothing_no_return_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_gulliver_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_gulliver_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_gulliver_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_gulliver_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_gulliver_5: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_gustave_1: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_gustave_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_gustave_3: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_gustave_4: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_gustave_5: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_haymitch: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_lapis_miner: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_lazy_miner: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_librarian: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_lift_operator: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_lumberjack: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_lumberjack_2: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_melody: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_pet_collector: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_pet_sitter: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_rick: + $ref: '#/components/schemas/SkyBlockProfileObjective' + talk_to_telekinesis_applier: + $ref: '#/components/schemas/SkyBlockProfileObjective' + warp_barn_island: + $ref: '#/components/schemas/SkyBlockProfileObjective' + warp_blazing_fortress: + $ref: '#/components/schemas/SkyBlockProfileObjective' + warp_deep_caverns: + $ref: '#/components/schemas/SkyBlockProfileObjective' + warp_foraging_islands: + $ref: '#/components/schemas/SkyBlockProfileObjective' + warp_gold_mine: + $ref: '#/components/schemas/SkyBlockProfileObjective' + warp_mushroom_desert: + $ref: '#/components/schemas/SkyBlockProfileObjective' + warp_spiders_den: + $ref: '#/components/schemas/SkyBlockProfileObjective' + warp_the_end: + $ref: '#/components/schemas/SkyBlockProfileObjective' + additionalProperties: + $ref: '#/components/schemas/SkyBlockProfileObjective' + SkyBlockProfileObjective: + type: object + properties: + completed_at: + type: number + progress: + type: number + status: + type: string + additionalProperties: + oneOf: + - type: boolean + - type: number + - type: string + required: + - completed_at + - progress + - status + SkyBlockProfilePets: + type: array + items: + $ref: '#/components/schemas/SkyBlockProfilePet' + SkyBlockProfilePet: + type: object + properties: + active: + type: boolean + candyUsed: + type: number + exp: + type: number + heldItem: + nullable: true + type: string + skin: + type: string + nullable: true + tier: + type: string + type: + type: string + uuid: + type: string + required: + - active + - exp + - tier + - type + SkyBlockProfileQuests: + type: object + properties: + collect_log: + $ref: '#/components/schemas/SkyBlockProfileQuest' + explore_hub: + $ref: '#/components/schemas/SkyBlockProfileQuest' + explore_village: + $ref: '#/components/schemas/SkyBlockProfileQuest' + increase_combat_skill_5: + $ref: '#/components/schemas/SkyBlockProfileQuest' + increase_farming_skill_5: + $ref: '#/components/schemas/SkyBlockProfileQuest' + increase_foraging_skill_5: + $ref: '#/components/schemas/SkyBlockProfileQuest' + increase_mining_skill_5: + $ref: '#/components/schemas/SkyBlockProfileQuest' + kill_danger_mobs: + $ref: '#/components/schemas/SkyBlockProfileQuest' + reforge_item: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_artist_1: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_auction_master: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_banker: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_blacksmith: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_carpenter: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_end_dealer: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_farmer: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_farmhand_1: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_guber_1: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_guildford_1: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_gulliver_1: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_gustave_1: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_lapis_miner: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_lazy_miner: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_librarian: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_lumberjack: + $ref: '#/components/schemas/SkyBlockProfileQuest' + talk_to_rick: + $ref: '#/components/schemas/SkyBlockProfileQuest' + additionalProperties: + $ref: '#/components/schemas/SkyBlockProfileQuest' + SkyBlockProfileQuest: + type: object + properties: + activated_at: + type: number + activated_at_sb: + type: number + completed_at: + type: number + completed_at_sb: + type: number + status: + type: string + required: + - activated_at + - activated_at_sb + - completed_at + - completed_at_sb + - status + SkyBlockProfileSlayerBosses: + type: object + properties: + spider: + $ref: '#/components/schemas/SkyBlockProfileSlayerBoss' + wolf: + $ref: '#/components/schemas/SkyBlockProfileSlayerBoss' + zombie: + $ref: '#/components/schemas/SkyBlockProfileSlayerBoss' + additionalProperties: + $ref: '#/components/schemas/SkyBlockProfileSlayerBoss' + required: + - spider + - wolf + - zombie + SkyBlockProfileSlayerBoss: + type: object + properties: + boss_kills_tier_0: + type: number + boss_kills_tier_1: + type: number + boss_kills_tier_2: + type: number + boss_kills_tier_3: + type: number + claimed_levels: + type: object + properties: + level_1: + type: boolean + level_2: + type: boolean + level_3: + type: boolean + level_4: + type: boolean + level_5: + type: boolean + level_6: + type: boolean + additionalProperties: + type: boolean + xp: + type: number + additionalProperties: + anyOf: + - type: number + - type: object + additionalProperties: + type: boolean + required: + - claimed_levels + SkyBlockProfileSlayerQuest: + type: object + description: Details on the profile member's currently active slayer quest. + properties: + combat_xp: + type: number + completion_state: + type: number + kill_timestamp: + type: number + last_killed_mob_island: + type: string + recent_mob_kills: + type: array + items: + type: object + properties: + timestamp: + type: number + xp: + type: number + required: + - timestamp + - xp + spawn_timestamp: + type: number + start_timestamp: + type: number + tier: + type: number + type: + type: string + xp_on_last_follower_spawn: + type: number + required: + - completion_state + - start_timestamp + - tier + - type + SkyBlockProfileStats: + type: object + properties: + auctions_bids: + type: number + auctions_bought_common: + type: number + auctions_bought_epic: + type: number + auctions_bought_legendary: + type: number + auctions_bought_rare: + type: number + auctions_bought_special: + type: number + auctions_bought_uncommon: + type: number + auctions_completed: + type: number + auctions_created: + type: number + auctions_fees: + type: number + auctions_gold_earned: + type: number + auctions_gold_spent: + type: number + auctions_highest_bid: + type: number + auctions_no_bids: + type: number + auctions_sold_common: + type: number + auctions_sold_epic: + type: number + auctions_sold_legendary: + type: number + auctions_sold_rare: + type: number + auctions_sold_special: + type: number + auctions_sold_uncommon: + type: number + auctions_won: + type: number + chicken_race_best_time_2: + type: number + deaths: + type: number + deaths_blaze: + type: number + deaths_cactus: + type: number + deaths_catfish: + type: number + deaths_corrupted_protector: + type: number + deaths_crypt_dreadlord: + type: number + deaths_crypt_lurker: + type: number + deaths_crypt_souleater: + type: number + deaths_diamond_guy: + type: number + deaths_diamond_skeleton: + type: number + deaths_diamond_zombie: + type: number + deaths_dungeon_respawning_skeleton: + type: number + deaths_emerald_slime: + type: number + deaths_enderman: + type: number + deaths_endermite: + type: number + deaths_fall: + type: number + deaths_fire: + type: number + deaths_fireball_magma_cube: + type: number + deaths_gaia_construct: + type: number + deaths_generator_magma_cube: + type: number + deaths_generator_slime: + type: number + deaths_howling_spirit: + type: number + deaths_king_midas: + type: number + deaths_lapis_zombie: + type: number + deaths_liquid_hot_magma: + type: number + deaths_livid_clone: + type: number + deaths_lost_adventurer: + type: number + deaths_magma_cube: + type: number + deaths_magma_cube_boss: + type: number + deaths_obsidian_wither: + type: number + deaths_old_dragon: + type: number + deaths_old_wolf: + type: number + deaths_player: + type: number + deaths_professor: + type: number + deaths_professor_guardian_summon: + type: number + deaths_professor_mage_guardian: + type: number + deaths_protector_dragon: + type: number + deaths_random_slime: + type: number + deaths_redstone_pigman: + type: number + deaths_revenant_zombie: + type: number + deaths_ruin_wolf: + type: number + deaths_sadan_statue: + type: number + deaths_scared_skeleton: + type: number + deaths_scarf: + type: number + deaths_scarf_mage: + type: number + deaths_scarf_warrior: + type: number + deaths_sea_guardian: + type: number + deaths_shadow_assassin: + type: number + deaths_skeleton: + type: number + deaths_skeleton_emperor: + type: number + deaths_skeleton_grunt: + type: number + deaths_skeleton_master: + type: number + deaths_skeleton_soldier: + type: number + deaths_skeletor: + type: number + deaths_sniper_skeleton: + type: number + deaths_soul_of_the_alpha: + type: number + deaths_spider: + type: number + deaths_spider_jockey: + type: number + deaths_spirit_bat: + type: number + deaths_spirit_rabbit: + type: number + deaths_strong_dragon: + type: number + deaths_suffocation: + type: number + deaths_superior_dragon: + type: number + deaths_tarantula_spider: + type: number + deaths_tentaclees: + type: number + deaths_trap: + type: number + deaths_unburried_zombie: + type: number + deaths_unknown: + type: number + deaths_unstable_dragon: + type: number + deaths_void: + type: number + deaths_voracious_spider: + type: number + deaths_watcher: + type: number + deaths_watcher_summon_undead: + type: number + deaths_weaver_spider: + type: number + deaths_wise_dragon: + type: number + deaths_wither_skeleton: + type: number + deaths_wolf: + type: number + deaths_young_dragon: + type: number + deaths_zealot_enderman: + type: number + deaths_zombie: + type: number + deaths_zombie_deep: + type: number + deaths_zombie_grunt: + type: number + deaths_zombie_soldier: + type: number + dungeon_hub_crystal_core_anything_no_return_best_time: + type: number + dungeon_hub_crystal_core_anything_with_return_best_time: + type: number + dungeon_hub_crystal_core_no_abilities_no_return_best_time: + type: number + dungeon_hub_crystal_core_no_pearls_no_return_best_time: + type: number + dungeon_hub_crystal_core_no_pearls_with_return_best_time: + type: number + dungeon_hub_crystal_core_nothing_no_return_best_time: + type: number + dungeon_hub_giant_mushroom_anything_no_return_best_time: + type: number + dungeon_hub_giant_mushroom_no_abilities_no_return_best_time: + type: number + dungeon_hub_giant_mushroom_no_pearls_no_return_best_time: + type: number + dungeon_hub_giant_mushroom_nothing_no_return_best_time: + type: number + dungeon_hub_precursor_ruins_anything_no_return_best_time: + type: number + dungeon_hub_precursor_ruins_no_abilities_no_return_best_time: + type: number + dungeon_hub_precursor_ruins_no_pearls_no_return_best_time: + type: number + dungeon_hub_precursor_ruins_nothing_no_return_best_time: + type: number + end_race_best_time: + type: number + ender_crystals_destroyed: + type: number + foraging_race_best_time: + type: number + gifts_given: + type: number + gifts_received: + type: number + highest_crit_damage: + type: number + highest_critical_damage: + type: number + items_fished: + type: number + items_fished_large_treasure: + type: number + items_fished_normal: + type: number + items_fished_treasure: + type: number + kills: + type: number + kills_bat_pinata: + type: number + kills_bat_spooky: + type: number + kills_batty_witch: + type: number + kills_blaze: + type: number + kills_blaze_higher_or_lower: + type: number + kills_blue_shark: + type: number + kills_bonzo_summon_undead: + type: number + kills_brood_mother_cave_spider: + type: number + kills_brood_mother_spider: + type: number + kills_carrot_king: + type: number + kills_catfish: + type: number + kills_cave_spider: + type: number + kills_cellar_spider: + type: number + kills_chicken: + type: number + kills_chicken_deep: + type: number + kills_corrupted_protector: + type: number + kills_cow: + type: number + kills_creeper: + type: number + kills_crypt_dreadlord: + type: number + kills_crypt_lurker: + type: number + kills_crypt_souleater: + type: number + kills_crypt_tank_zombie: + type: number + kills_crypt_undead: + type: number + kills_crypt_undead_alexander: + type: number + kills_crypt_undead_apunch: + type: number + kills_crypt_undead_bernhard: + type: number + kills_crypt_undead_christian: + type: number + kills_crypt_undead_codename_b: + type: number + kills_crypt_undead_connorlinfoot: + type: number + kills_crypt_undead_dctr: + type: number + kills_crypt_undead_friedrich: + type: number + kills_crypt_undead_jayavarmen: + type: number + kills_crypt_undead_likaos: + type: number + kills_crypt_undead_marius: + type: number + kills_crypt_undead_nicholas: + type: number + kills_crypt_undead_nitroholic_: + type: number + kills_crypt_undead_pieter: + type: number + kills_crypt_undead_relenter: + type: number + kills_crypt_undead_sfarnham: + type: number + kills_crypt_undead_valentin: + type: number + kills_crypt_witherskeleton: + type: number + kills_dasher_spider: + type: number + kills_deep_sea_protector: + type: number + kills_diamond_guy: + type: number + kills_diamond_skeleton: + type: number + kills_diamond_zombie: + type: number + kills_dungeon_respawning_skeleton: + type: number + kills_dungeon_respawning_skeleton_skull: + type: number + kills_dungeon_secret_bat: + type: number + kills_emerald_slime: + type: number + kills_enderman: + type: number + kills_endermite: + type: number + kills_fireball_magma_cube: + type: number + kills_forest_island_bat: + type: number + kills_frosty_the_snowman: + type: number + kills_frozen_steve: + type: number + kills_gaia_construct: + type: number + kills_generator_ghast: + type: number + kills_generator_magma_cube: + type: number + kills_generator_slime: + type: number + kills_ghast: + type: number + kills_guardian_defender: + type: number + kills_guardian_emperor: + type: number + kills_horseman_bat: + type: number + kills_horseman_horse: + type: number + kills_horseman_zombie: + type: number + kills_howling_spirit: + type: number + kills_invisible_creeper: + type: number + kills_jockey_shot_silverfish: + type: number + kills_jockey_skeleton: + type: number + kills_king_midas: + type: number + kills_lapis_zombie: + type: number + kills_liquid_hot_magma: + type: number + kills_lonely_spider: + type: number + kills_lost_adventurer: + type: number + kills_magma_cube: + type: number + kills_magma_cube_boss: + type: number + kills_minos_hunter: + type: number + kills_minotaur: + type: number + kills_night_respawning_skeleton: + type: number + kills_night_squid: + type: number + kills_nurse_shark: + type: number + kills_obsidian_wither: + type: number + kills_old_wolf: + type: number + kills_pack_spirit: + type: number + kills_parasite: + type: number + kills_phantom_spirit: + type: number + kills_pig: + type: number + kills_pigman: + type: number + kills_player: + type: number + kills_pond_squid: + type: number + kills_professor_guardian_summon: + type: number + kills_protector_dragon: + type: number + kills_rabbit: + type: number + kills_random_slime: + type: number + kills_redstone_pigman: + type: number + kills_respawning_skeleton: + type: number + kills_revenant_zombie: + type: number + kills_ruin_wolf: + type: number + kills_scared_skeleton: + type: number + kills_scarf_archer: + type: number + kills_scarf_mage: + type: number + kills_scarf_priest: + type: number + kills_scarf_warrior: + type: number + kills_scary_jerry: + type: number + kills_sea_archer: + type: number + kills_sea_guardian: + type: number + kills_sea_leech: + type: number + kills_sea_walker: + type: number + kills_sea_witch: + type: number + kills_shadow_assassin: + type: number + kills_sheep: + type: number + kills_siamese_lynx: + type: number + kills_skeleton: + type: number + kills_skeleton_emperor: + type: number + kills_skeleton_grunt: + type: number + kills_skeleton_master: + type: number + kills_skeleton_soldier: + type: number + kills_skeletor: + type: number + kills_slime: + type: number + kills_sniper_skeleton: + type: number + kills_soul_of_the_alpha: + type: number + kills_spider: + type: number + kills_spider_jockey: + type: number + kills_spirit_bat: + type: number + kills_spirit_bull: + type: number + kills_spirit_chicken: + type: number + kills_spirit_miniboss: + type: number + kills_spirit_rabbit: + type: number + kills_spirit_sheep: + type: number + kills_spirit_wolf: + type: number + kills_splitter_spider: + type: number + kills_splitter_spider_silverfish: + type: number + kills_strong_dragon: + type: number + kills_super_archer: + type: number + kills_super_tank_zombie: + type: number + kills_tarantula_spider: + type: number + kills_tentaclees: + type: number + kills_tiger_shark: + type: number + kills_trick_or_treater: + type: number + kills_unburried_zombie: + type: number + kills_voracious_spider: + type: number + kills_watcher: + type: number + kills_watcher_bonzo: + type: number + kills_watcher_summon_undead: + type: number + kills_water_hydra: + type: number + kills_weaver_spider: + type: number + kills_witch: + type: number + kills_witch_bat: + type: number + kills_wither_gourd: + type: number + kills_wither_skeleton: + type: number + kills_wraith: + type: number + kills_zealot_enderman: + type: number + kills_zombie: + type: number + kills_zombie_deep: + type: number + kills_zombie_grunt: + type: number + kills_zombie_knight: + type: number + kills_zombie_soldier: + type: number + kills_zombie_villager: + type: number + most_winter_cannonballs_hit: + type: number + most_winter_damage_dealt: + type: number + most_winter_magma_damage_dealt: + type: number + most_winter_snowballs_hit: + type: number + mythos_burrows_chains_complete: + type: number + mythos_burrows_chains_complete_COMMON: + type: number + mythos_burrows_chains_complete_RARE: + type: number + mythos_burrows_chains_complete_null: + type: number + mythos_burrows_dug_combat: + type: number + mythos_burrows_dug_combat_COMMON: + type: number + mythos_burrows_dug_combat_RARE: + type: number + mythos_burrows_dug_combat_null: + type: number + mythos_burrows_dug_next: + type: number + mythos_burrows_dug_next_COMMON: + type: number + mythos_burrows_dug_next_RARE: + type: number + mythos_burrows_dug_next_null: + type: number + mythos_burrows_dug_treasure: + type: number + mythos_burrows_dug_treasure_COMMON: + type: number + mythos_burrows_dug_treasure_RARE: + type: number + mythos_burrows_dug_treasure_null: + type: number + mythos_kills: + type: number + pet_milestone_ores_mined: + type: number + pet_milestone_sea_creatures_killed: + type: number + additionalProperties: + type: number + securitySchemes: + apiKey: + type: apiKey + name: key + in: query diff --git a/deno_dist/types/DefaultMeta.ts b/deno_dist/types/DefaultMeta.ts new file mode 100644 index 00000000..57511b40 --- /dev/null +++ b/deno_dist/types/DefaultMeta.ts @@ -0,0 +1,32 @@ +import { RateLimitData } from "./RateLimitData.ts"; + +/** + * Possible meta options returned on the meta variable. + */ +export interface DefaultMeta { + /** + * If this request required an API key it returned rate limit information in the headers, which is included here. + */ + ratelimit?: RateLimitData; + /** + * If you included a cache get/set method in the options, this value will be set to true if that cache was hit. + */ + cached?: boolean; + /** + * Data from CloudFlare's headers in regards to caching - particularly relevant for resources endpoints. + */ + cloudflareCache?: { + /** + * Cloudflare cache status. + */ + status: "HIT" | "MISS" | "BYPASS" | "EXPIRED" | "DYNAMIC"; + /** + * Cloudflare cache age. + */ + age?: number; + /** + * Cloudflare max cache age. + */ + maxAge?: number; + }; +} diff --git a/deno_dist/types/RateLimitData.ts b/deno_dist/types/RateLimitData.ts new file mode 100644 index 00000000..a3f5cdcd --- /dev/null +++ b/deno_dist/types/RateLimitData.ts @@ -0,0 +1,15 @@ +/** @hidden */ +export interface RateLimitData { + /** + * Remaining API calls until the limit resets. + */ + remaining: number; + /** + * Time, in seconds, until remaining resets to limit. + */ + reset: number; + /** + * How many requests per minute your API key can make. + */ + limit: number; +} diff --git a/deno_dist/types/api.ts b/deno_dist/types/api.ts new file mode 100644 index 00000000..994e9296 --- /dev/null +++ b/deno_dist/types/api.ts @@ -0,0 +1,6286 @@ +export declare namespace Components { + namespace Parameters { + namespace ByGuildName { + /** + * example: + * Mini Squid + */ + export type ByName = string; + } + namespace ByUuid { + /** + * example: + * 20934ef9488c465180a78f861586b4cf + */ + export type ByUuid = string; + } + namespace PlayerUuid { + /** + * example: + * 20934ef9488c465180a78f861586b4cf + */ + export type Uuid = string; + } + namespace PlayerUuidRequired { + /** + * example: + * 20934ef9488c465180a78f861586b4cf + */ + export type Uuid = string; + } + } + namespace Responses { + export type MalformedUUID = Schemas.ApiError; + export type MissingFields = Schemas.ApiError; + export type RateLimitError = Schemas.ApiError; + export type Unauthorized = Schemas.ApiError; + } + namespace Schemas { + /** + * The game mode's achievement data. + */ + export interface AchievementGameModeData { + /** + * Any one off achievements, each property's key is the name used in data, and the proper name is stored in the "name" property. + * All objects contain the name, points awarded, and description. Some contain a legacy boolean and others might contain percentage of who has unlocked them. + * + */ + one_time: { + [name: string]: { + name: string; + description: string; + points: number; + secret?: boolean; + legacy?: boolean; + gamePercentUnlocked?: number; + globalPercentUnlocked?: number; + }; + }; + /** + * Any tiered achievements, each property's key is the name used in data, and the proper name is stored in the "name" property. + * All objects contain the name, description, and achievement tiers. Some contain a legacy boolean. + * The achievement tiers array contains the points earned for each tier, and additional data. + * + */ + tiered: { + [name: string]: { + name: string; + description: string; + legacy?: boolean; + tiers: { + tier: number; + points: number; + amount: number; + }[]; + }; + }; + /** + * Total earnable achievement points in this game mode. + */ + total_points: number; + /** + * Total earnable _legacy_ achievement points in this game mode. + */ + total_legacy_points: number; + } + export interface AchievementsResourceResponse { + /** + * Whether or not the request succeeded. + */ + success: boolean; + /** + * Unix timestamp this resource was last updated. + */ + lastUpdated: number; + /** + * Object describing each game mode's achievement data. The game mode is the object's key. + */ + achievements: { + [ + name: string + ]: /* The game mode's achievement data. */ AchievementGameModeData; + arcade: /* The game mode's achievement data. */ AchievementGameModeData; + arena: /* The game mode's achievement data. */ AchievementGameModeData; + bedwars: /* The game mode's achievement data. */ AchievementGameModeData; + blitz: /* The game mode's achievement data. */ AchievementGameModeData; + buildbattle: /* The game mode's achievement data. */ AchievementGameModeData; + christmas2017: /* The game mode's achievement data. */ AchievementGameModeData; + copsandcrims: /* The game mode's achievement data. */ AchievementGameModeData; + duels: /* The game mode's achievement data. */ AchievementGameModeData; + easter: /* The game mode's achievement data. */ AchievementGameModeData; + general: /* The game mode's achievement data. */ AchievementGameModeData; + gingerbread: /* The game mode's achievement data. */ AchievementGameModeData; + halloween2017: /* The game mode's achievement data. */ AchievementGameModeData; + housing: /* The game mode's achievement data. */ AchievementGameModeData; + murdermystery: /* The game mode's achievement data. */ AchievementGameModeData; + paintball: /* The game mode's achievement data. */ AchievementGameModeData; + pit: /* The game mode's achievement data. */ AchievementGameModeData; + quake: /* The game mode's achievement data. */ AchievementGameModeData; + skyblock: /* The game mode's achievement data. */ AchievementGameModeData; + skyclash: /* The game mode's achievement data. */ AchievementGameModeData; + skywars: /* The game mode's achievement data. */ AchievementGameModeData; + speeduhc: /* The game mode's achievement data. */ AchievementGameModeData; + summer: /* The game mode's achievement data. */ AchievementGameModeData; + supersmash: /* The game mode's achievement data. */ AchievementGameModeData; + tntgames: /* The game mode's achievement data. */ AchievementGameModeData; + truecombat: /* The game mode's achievement data. */ AchievementGameModeData; + uhc: /* The game mode's achievement data. */ AchievementGameModeData; + vampirez: /* The game mode's achievement data. */ AchievementGameModeData; + walls: /* The game mode's achievement data. */ AchievementGameModeData; + walls3: /* The game mode's achievement data. */ AchievementGameModeData; + warlords: /* The game mode's achievement data. */ AchievementGameModeData; + }; + } + export interface ApiError { + /** + * Whether or not the request succeeded. + */ + success: boolean; + /** + * Error message of the failure that resulted in `success: false` + */ + cause: string; + } + export interface ApiSuccess { + /** + * Whether or not the request succeeded. + */ + success: boolean; + } + export type ChallengeData = { + id: string; + name: string; + rewards: { + type: string; + amount: number; + }[]; + }[]; + export interface ChallengesResourceResponse { + /** + * Whether or not the request succeeded. + */ + success: boolean; + /** + * Unix timestamp this resource was last updated. + */ + lastUpdated: number; + challenges: { + [name: string]: ChallengeData; + arcade: ChallengeData; + arena: ChallengeData; + bedwars: ChallengeData; + hungergames: ChallengeData; + buildbattle: ChallengeData; + truecombat: ChallengeData; + duels: ChallengeData; + mcgo: ChallengeData; + murdermystery: ChallengeData; + paintball: ChallengeData; + quake: ChallengeData; + skyclash: ChallengeData; + skywars: ChallengeData; + supersmash: ChallengeData; + speeduhc: ChallengeData; + gingerbread: ChallengeData; + tntgames: ChallengeData; + uhc: ChallengeData; + vampirez: ChallengeData; + walls3: ChallengeData; + walls: ChallengeData; + battleground: ChallengeData; + }; + } + export interface Guild { + _id: string; + achievements: GuildAchievements; + banner?: GuildBanner; + chatMute?: number; + coins: number; + coinsEver: number; + created: number; + description?: string | null; + exp: number; + guildExpByGameType: /** + * Earned guild exp in each game mode, where the property key is the gamemode and the value is the exp. + * Most of the properties in the schema always show up, however in some instances they were absent. Additional unlisted properties can be assumed to be numbers. + * + */ + GuildExpByGameType; + hideGmTag?: boolean; + joinable?: boolean; + legacyRanking?: number; + members: GuildMember[]; + name: string; + name_lower: string; + preferredGames?: string[]; + publiclyListed?: boolean; + ranks: GuildRank[]; + tag?: string; + tagColor?: string; + } + export interface GuildAchievements { + WINNERS: number; + EXPERIENCE_KINGS: number; + ONLINE_PLAYERS: number; + } + export interface GuildBanner { + Base: number | string; + Patterns: { + Color: number | string; + Pattern: string; + }[]; + } + /** + * Earned guild exp in each game mode, where the property key is the gamemode and the value is the exp. + * Most of the properties in the schema always show up, however in some instances they were absent. Additional unlisted properties can be assumed to be numbers. + * + */ + export interface GuildExpByGameType { + [name: string]: undefined | number; + ARCADE?: number; + ARENA?: number; + BATTLEGROUND?: number; + BEDWARS?: number; + BUILD_BATTLE?: number; + DUELS?: number; + GINGERBREAD?: number; + HOUSING?: number; + LEGACY?: number; + MCGO?: number; + MURDER_MYSTERY?: number; + PAINTBALL?: number; + PIT?: number; + PROTOTYPE?: number; + QUAKECRAFT?: number; + REPLAY?: number; + SKYBLOCK?: number; + SKYWARS?: number; + SPEED_UHC?: number; + SUPER_SMASH?: number; + SURVIVAL_GAMES?: number; + TNTGAMES?: number; + UHC?: number; + VAMPIREZ?: number; + WALLS?: number; + WALLS3?: number; + } + export interface GuildMember { + /** + * Property keys are the date in the format YYYY-MM-DD, and the value is how much guild exp they earned on that date. + * + * Stores the last 7 days, so you can expect at maximum 7 properties on this exp history object. + * + * Example: + * ```typescript + * console.log(guild.members[0].expHistory['2020-11-17']); + * // output: + * 163214 + * ``` + * + */ + expHistory: { + [name: string]: number; + }; + /** + * Timestamp of when this guild member joined the guild. + */ + joined: number; + /** + * If they have been muted in guild chat, this is the timestamp of when they're unmuted. + */ + mutedTill?: number; + /** + * Old value describing the member's username. This is not used anymore and rarely shows up as a valid property. + */ + name?: string; + questParticipation?: number; + /** + * The name of their rank, it may match the name of a rank in the rank object - otherwise they may be unranked / the GM (GM ranks are usually "GUILDMASTER" or "Guild Master") + */ + rank: string; + /** + * Minecraft UUID of the guild memeber. + */ + uuid: string; + } + export interface GuildRank { + /** + * Timestamp of the rank creation. + */ + created: number; + /** + * Whether or not this the default rank players receive upon joining. + */ + default?: boolean; + /** + * Name of the rank. + */ + name: string; + /** + * Rank priority from lowest to highest. + */ + priority: number; + /** + * Rank tag (short version of rank name or whatever else the guildmaster wants it to be). + */ + tag?: string | null; + } + export interface GuildResponse { + /** + * Whether or not the request succeeded. + */ + success: boolean; + guild: Guild | null; + } + export interface GuildsAchievementsResourceResponse { + /** + * Whether or not the request succeeded. + */ + success: boolean; + /** + * Unix timestamp this resource was last updated. + */ + lastUpdated: number; + /** + * An empty object at this time. We can probably assume in the future it may contain data not unlike the normal /resources/achievements endpoint. + */ + one_time: unknown; + tiered: { + [name: string]: GuildsTieredAchievementsData; + PRESTIGE: GuildsTieredAchievementsData; + EXPERIENCE_KINGS: GuildsTieredAchievementsData; + WINNERS: GuildsTieredAchievementsData; + ONLINE_PLAYERS: GuildsTieredAchievementsData; + }; + } + export interface GuildsPermissionsResourceResponse { + /** + * Whether or not the request succeeded. + */ + success: boolean; + /** + * Unix timestamp this resource was last updated. + */ + lastUpdated: number; + permissions: { + en_us: { + name: string; + description: string; + item: { + name: string; + }; + }; + }[]; + } + export interface GuildsTieredAchievementsData { + name: string; + description: string; + tiers: { + tier: number; + amount: number; + }[]; + } + export interface LeaderboardDataEntry { + path: string; + prefix: string; + title: string; + location: string; + count: number; + leaders: (string | null)[]; + } + export interface LeaderboardsResponse { + leaderboards: { + [name: string]: LeaderboardDataEntry[]; + ARENA: LeaderboardDataEntry[]; + MCGO: LeaderboardDataEntry[]; + BATTLEGROUND: LeaderboardDataEntry[]; + SURVIVAL_GAMES: LeaderboardDataEntry[]; + UHC: LeaderboardDataEntry[]; + WALLS: LeaderboardDataEntry[]; + PROTOTYPE: LeaderboardDataEntry[]; + PAINTBALL: LeaderboardDataEntry[]; + SKYWARS: LeaderboardDataEntry[]; + MURDER_MYSTERY: LeaderboardDataEntry[]; + SUPER_SMASH: LeaderboardDataEntry[]; + DUELS: LeaderboardDataEntry[]; + SPEED_UHC: LeaderboardDataEntry[]; + TNTGAMES: LeaderboardDataEntry[]; + BEDWARS: LeaderboardDataEntry[]; + GINGERBREAD: LeaderboardDataEntry[]; + BUILD_BATTLE: LeaderboardDataEntry[]; + ARCADE: LeaderboardDataEntry[]; + SKYCLASH: LeaderboardDataEntry[]; + QUAKECRAFT: LeaderboardDataEntry[]; + TRUE_COMBAT: LeaderboardDataEntry[]; + WALLS3: LeaderboardDataEntry[]; + VAMPIREZ: LeaderboardDataEntry[]; + }; + } + export type NewsEntries = NewsEntry[]; + export interface NewsEntry { + item: NewsEntryItem; + link: string; + text: string; + title: string; + } + export interface NewsEntryItem { + material: string; + data?: number; + } + export interface NewsResponse { + /** + * Whether or not the request succeeded. + */ + success: boolean; + items: NewsEntries; + } + export type NullablePlayer = /** + * The player object has many properties that define specific things. There are many of these properties, and due to their iterative nature no point in typing them. + * + * ## Booleans + * + * Additional properties that are the boolean type (true/false) are usually a setting toggle or a one time event/action. + * + * * Properties with keys that start with "levelingReward_" and end with a number indicate when that leveling reward has been claimed. The number itself is the network level of the reward. + * * Properties with keys that look like "xmas2019_MAIN_LOBBY_1" - I believe these correlate with Christmas events but not sure what true/false means for these. + * * The general property key format is "xmasYEAR_TYPE_NUMBER". + * * A regex to match these would be: /^xmas(\d{4})_([A-Z_]+?)_(\d+)$/ + * + * ## Numbers + * + * Additional properties that are the number type will generally either be some form of statistic, or a timestamp. + * + * * Properties with keys that start with "claimed_solo_bank_" will be a timestamp indicating when it was claimed. The full key will include a Minecraft UUID at the end. + * * Properties with keys that roughly match "completed_christmas_quests_YEAR" will be a timestamp that indicates when they completed all the available quests for that event. + * * Properties with keys that start with "anniversaryNPCProgress" will indicate how many event NPCs have been visited by the player. + * + * ## Arrays + * + * Some arrays will fit into a certain schema based on the property's key. + * + * * Properties with keys that start with "anniversaryNPCVisited" will be an array of numbers. + * + * ## Objects + * + * Some objects will fit into a certain schema based on the property's key. + * + * * Properties with keys starting with "adventRewards" will fit the "PlayerAdventRewards" schema. + * * Properties with keys ending with "Cooldowns" will fit the "PlayerEventCooldown" schema. + * * Properties with keys starting with "upcomingLanguageRelease_" will fit the "PlayerUpcomingLanguageRelease" schema. + * * Properties with keys starting with "dmcrates-" will fit the "PlayerMonthlyCrates" schema. + * + */ Player | null; + /** + * The player object has many properties that define specific things. There are many of these properties, and due to their iterative nature no point in typing them. + * + * ## Booleans + * + * Additional properties that are the boolean type (true/false) are usually a setting toggle or a one time event/action. + * + * * Properties with keys that start with "levelingReward_" and end with a number indicate when that leveling reward has been claimed. The number itself is the network level of the reward. + * * Properties with keys that look like "xmas2019_MAIN_LOBBY_1" - I believe these correlate with Christmas events but not sure what true/false means for these. + * * The general property key format is "xmasYEAR_TYPE_NUMBER". + * * A regex to match these would be: /^xmas(\d{4})_([A-Z_]+?)_(\d+)$/ + * + * ## Numbers + * + * Additional properties that are the number type will generally either be some form of statistic, or a timestamp. + * + * * Properties with keys that start with "claimed_solo_bank_" will be a timestamp indicating when it was claimed. The full key will include a Minecraft UUID at the end. + * * Properties with keys that roughly match "completed_christmas_quests_YEAR" will be a timestamp that indicates when they completed all the available quests for that event. + * * Properties with keys that start with "anniversaryNPCProgress" will indicate how many event NPCs have been visited by the player. + * + * ## Arrays + * + * Some arrays will fit into a certain schema based on the property's key. + * + * * Properties with keys that start with "anniversaryNPCVisited" will be an array of numbers. + * + * ## Objects + * + * Some objects will fit into a certain schema based on the property's key. + * + * * Properties with keys starting with "adventRewards" will fit the "PlayerAdventRewards" schema. + * * Properties with keys ending with "Cooldowns" will fit the "PlayerEventCooldown" schema. + * * Properties with keys starting with "upcomingLanguageRelease_" will fit the "PlayerUpcomingLanguageRelease" schema. + * * Properties with keys starting with "dmcrates-" will fit the "PlayerMonthlyCrates" schema. + * + */ + export interface Player { + [name: string]: + | undefined + | string + | number + | boolean + | string[] + | number[] + /** + * An object where each property is the day of the reward and the value is the timestamp it was claimed. Property keys look like "dayNUMBER" e.g. day1. + * The property keys on the player object generally follow the format "adventRewardsYEAR" or "adventrewards_v2_YEAR". + * + */ + | PlayerAdventRewards + | PlayerAchievementTotem + /** + * In addition to the all_time property, other properties may appear that have properties that start with "day_" but have the same schema as all_time. + * + */ + | PlayerChallenges + | PlayerCompassStats + | PlayerCooldowns + /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + | PlayerEventCooldown + | PlayerFireworksStorage + | PlayerGiftingMeta + | /* Potentially has properties that follow format "given_cookies_NUMBER" which will be an array of strings. */ PlayerHousingMeta + | /* Each property is a month and year like "8-2019" and the value contains booleans indicating which reward tier was claimed. */ PlayerMonthlyCrates + | /* Each property is a month and year like "8-2019" and the value contains booleans indicating which reward tier was claimed. */ PlayerMonthlyCrates + | PlayerOutfit + | /* Each property key describes the location of the parkour. e.g. "Prototype" or "Bedwars". */ PlayerParkourCheckpointBests + | /* Each property key describes the location of the parkour. e.g. "Prototype" or "Bedwars". */ PlayerParkourCompletions + | /* This object describes the pet pet consumables the player has. Each property's key is the consumable name. e.g. "APPLE" or "WOOD_SWORD" */ PlayerPetConsumables + | /* Each property key is the name of the pet the stats apply to. */ PlayerPetStats + | PlayerPlotResets + | PlayerQuestSettings + | /* An object which has properties which match quests described by the /resources/quests endpoint. */ PlayerQuests + | PlayerSettings + | PlayerSkin + | PlayerSocialMedia + | /* The player stats object contains statistics for individual game modes. */ PlayerStats + | /* Aside from the properties in the schema this object contains properties who's keys follow a format like "GAMEMODE_TYPE_NUMBER". e.g. "sw_insane_doubles_0". These fit the "PlayerTourneyGameData" schema. */ PlayerTourney + /** + * An object describing what I assume to be testers who've logged in with a specific language. + * + */ + | PlayerUpcomingLanguageRelease + | PlayerVanityMeta; + _id: string; + uuid: string; + playername: string; + displayname: string; + firstLogin?: number; + lastLogin?: number; + lastLogout?: number; + knownAliases: string[]; + knownAliasesLower: string[]; + /** + * Timestamp of when the SkyBlock Century Cake was claimed. + */ + claimed_century_cake?: number; + /** + * Timestamp of when the Potato Basket was claimed. + */ + claimed_potato_basket?: number; + /** + * Timestamp of when the Potato Talisman was claimed. + */ + claimed_potato_talisman?: number; + monthlyPackageRank?: string; + monthlyRankColor?: string; + newPackageRank?: string; + packageRank?: string; + rank?: string; + rankPlusColor?: string; + /** + * Timestamp indicating when they purchased the rank. + */ + levelUp_NONE?: number; + /** + * Timestamp indicating when they purchased the rank. + */ + levelUp_VIP?: number; + /** + * Timestamp indicating when they purchased the rank. + */ + levelUp_VIP_PLUS?: number; + /** + * Timestamp indicating when they purchased the rank. + */ + levelUp_MVP?: number; + /** + * Timestamp indicating when they purchased the rank. + */ + levelUp_MVP_PLUS?: number; + lastClaimedReward?: number; + lastAdsenseGenerateTime?: number; + lastMapVote?: number; + mcVersionRp?: string; + mostRecentGameType?: string; + mostRecentMinecraftVersion?: number; + mostRecentMonthlyPackageRank?: string; + mostRecentlyThanked?: string; + mostRecentlyThankedUuid?: string; + mostRecentlyTipped?: string; + mostRecentlyTippedUuid?: string; + petConsumables?: /* This object describes the pet pet consumables the player has. Each property's key is the consumable name. e.g. "APPLE" or "WOOD_SWORD" */ PlayerPetConsumables; + petJourneyTimestamp?: number; + quickjoin_timestamp?: number; + quickjoin_uses?: number; + scorpius_bribe_96?: number; + testPass?: boolean; + watchdogBlockTimestamp?: number; + adsense_tokens?: number; + networkExp?: number; + karma?: number; + coins?: number; + eulaCoins?: boolean; + kills?: number; + killstreaks?: number; + deaths?: number; + wins?: number; + fortuneBuff?: number; + gifts_grinch?: number; + hasTheHotPotato?: boolean; + main2017Tutorial?: boolean; + monthlycrates?: /* Each property is a month and year like "8-2019" and the value contains booleans indicating which reward tier was claimed. */ PlayerMonthlyCrates; + /** + * This property represents a version - e.g. "v0.75" + */ + network_update_book?: string; + parkourCheckpointBests?: /* Each property key describes the location of the parkour. e.g. "Prototype" or "Bedwars". */ PlayerParkourCheckpointBests; + parkourCompletions?: /* Each property key describes the location of the parkour. e.g. "Prototype" or "Bedwars". */ PlayerParkourCompletions; + petStats?: /* Each property key is the name of the pet the stats apply to. */ PlayerPetStats; + rewardConsumed?: boolean; + rewardHighScore?: number; + rewardScore?: number; + rewardStreak?: number; + skyblock_free_cookie?: number; + shots_fired?: number; + snowball_fight_intro_2019?: boolean; + stats: /* The player stats object contains statistics for individual game modes. */ PlayerStats; + thanksReceived?: number; + thanksSent?: number; + timePlaying?: number; + totalDailyRewards?: number; + totalRewards?: number; + tourney?: /* Aside from the properties in the schema this object contains properties who's keys follow a format like "GAMEMODE_TYPE_NUMBER". e.g. "sw_insane_doubles_0". These fit the "PlayerTourneyGameData" schema. */ PlayerTourney; + tournamentTokens?: number; + vanityConvertedBoxToday?: number; + vanityFirstConvertedBox?: number; + voting?: PlayerVoting; + vanityTokens?: number; + language?: string; + autoDetectLanguage?: boolean; + auto_spawn_pet?: boolean; + battlePassGlowStatus?: boolean; + channel?: string; + chat?: boolean; + clock?: boolean; + collectibles_menu_sort?: string; + collectibles_menu_visibility_sort?: string; + combatTracker?: boolean; + currentClickEffect?: string; + currentCloak?: string; + currentEmote?: string; + currentGadget?: string; + currentHat?: string; + currentPet?: string; + customFilter?: string; + disableTipMessages?: boolean; + disguise?: string; + gadget?: string; + notifications?: boolean; + outfit?: PlayerOutfit; + onetime_achievement_menu_sort?: string; + onetime_achievement_menu_sort_completion_sort?: string; + particlePack?: string; + petActive?: boolean; + /** + * Particle pack, e.g. "note", "anger", "enchantment", etc. + */ + pp?: string; + questSettings?: PlayerQuestSettings; + seeRequests?: boolean; + sendCerberusMessages?: boolean; + settings?: PlayerSettings; + skin?: PlayerSkin; + socialMedia?: PlayerSocialMedia; + spec_always_flying?: boolean; + spec_auto_teleport?: boolean; + spec_first_person?: boolean; + spectators_invisible?: boolean; + tiered_achievement_menu_sort?: string; + transformation?: string; + userLanguage?: string; + vanityFavorites?: string; + wardrobe?: string; + friendBlocksUuid?: string[]; + friendRequests?: string[]; + friendRequestsUuid?: string[]; + guildInvites?: string[]; + guildKickReason?: string; + guildNotifications?: boolean; + challenges?: /** + * In addition to the all_time property, other properties may appear that have properties that start with "day_" but have the same schema as all_time. + * + */ + PlayerChallenges; + quests?: /* An object which has properties which match quests described by the /resources/quests endpoint. */ PlayerQuests; + aprilFoolsStaffClicked_0?: string[]; + anniversaryNPCProgress2020?: number; + anniversaryNPCVisited2020?: number[]; + SANTA_FINISHED?: boolean; + SANTA_QUEST_STARTED?: boolean; + compassStats?: PlayerCompassStats; + cooldowns?: PlayerCooldowns; + fireworksStorage?: PlayerFireworksStorage; + giftingMeta?: PlayerGiftingMeta; + housingMeta?: /* Potentially has properties that follow format "given_cookies_NUMBER" which will be an array of strings. */ PlayerHousingMeta; + vanityMeta?: PlayerVanityMeta; + flashingSaleClicks?: number; + flashingSaleOpens?: number; + flashingSalePoppedUp?: number; + flashingSalePopup?: number; + adventRewards2017?: /** + * An object where each property is the day of the reward and the value is the timestamp it was claimed. Property keys look like "dayNUMBER" e.g. day1. + * The property keys on the player object generally follow the format "adventRewardsYEAR" or "adventrewards_v2_YEAR". + * + */ + PlayerAdventRewards; + adventRewards2018?: /** + * An object where each property is the day of the reward and the value is the timestamp it was claimed. Property keys look like "dayNUMBER" e.g. day1. + * The property keys on the player object generally follow the format "adventRewardsYEAR" or "adventrewards_v2_YEAR". + * + */ + PlayerAdventRewards; + adventRewards_v2_2018?: /** + * An object where each property is the day of the reward and the value is the timestamp it was claimed. Property keys look like "dayNUMBER" e.g. day1. + * The property keys on the player object generally follow the format "adventRewardsYEAR" or "adventrewards_v2_YEAR". + * + */ + PlayerAdventRewards; + adventRewards2019?: /** + * An object where each property is the day of the reward and the value is the timestamp it was claimed. Property keys look like "dayNUMBER" e.g. day1. + * The property keys on the player object generally follow the format "adventRewardsYEAR" or "adventrewards_v2_YEAR". + * + */ + PlayerAdventRewards; + adventRewards_v2_2019?: /** + * An object where each property is the day of the reward and the value is the timestamp it was claimed. Property keys look like "dayNUMBER" e.g. day1. + * The property keys on the player object generally follow the format "adventRewardsYEAR" or "adventrewards_v2_YEAR". + * + */ + PlayerAdventRewards; + christmas2019Cooldowns?: /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + PlayerEventCooldown; + summer2020Cooldowns?: /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + PlayerEventCooldown; + easter2020Cooldowns?: /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + PlayerEventCooldown; + easter2020Cooldowns2?: /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + PlayerEventCooldown; + halloween2016Cooldowns?: /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + PlayerEventCooldown; + halloween2020Cooldowns?: /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + PlayerEventCooldown; + holiday2016Cooldowns?: /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + PlayerEventCooldown; + specialtyCooldowns?: /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + PlayerEventCooldown; + upcomingLanguageRelease_Korean?: /** + * An object describing what I assume to be testers who've logged in with a specific language. + * + */ + PlayerUpcomingLanguageRelease; + upcomingLanguageRelease_Portuguese?: /** + * An object describing what I assume to be testers who've logged in with a specific language. + * + */ + PlayerUpcomingLanguageRelease; + upcomingLanguageRelease_Russian?: /** + * An object describing what I assume to be testers who've logged in with a specific language. + * + */ + PlayerUpcomingLanguageRelease; + plotResets?: PlayerPlotResets; + achievementPoints: number; + achievementRewardsNew?: /* Object property keys are in the format "for_points_NUMBER". */ PlayerAchievementRewardsNew; + achievementSync?: PlayerAchievementSync; + achievementTotem?: PlayerAchievementTotem; + achievementTracking: string[]; + achievementTrackingHideMessages?: boolean; + achievements: /* Tiered / numbered achievements the player has earned. All known properties are listed but given it's Hypixel it's subject to change fairly often. */ PlayerAchievements; + /** + * Array of values, each value representing an achievement. + */ + achievementsOneTime: string[]; + } + export interface PlayerAchievementData { + achievementPoints: number; + achievementRewardsNew?: /* Object property keys are in the format "for_points_NUMBER". */ PlayerAchievementRewardsNew; + achievementSync?: PlayerAchievementSync; + achievementTotem?: PlayerAchievementTotem; + achievementTracking: string[]; + achievementTrackingHideMessages?: boolean; + achievements: /* Tiered / numbered achievements the player has earned. All known properties are listed but given it's Hypixel it's subject to change fairly often. */ PlayerAchievements; + /** + * Array of values, each value representing an achievement. + */ + achievementsOneTime: string[]; + } + /** + * Object property keys are in the format "for_points_NUMBER". + */ + export interface PlayerAchievementRewardsNew { + [name: string]: number; + } + export interface PlayerAchievementSync { + [name: string]: number; + quake_tiered: number; + } + export interface PlayerAchievementTotem { + allowed_max_height: number; + canCustomize: boolean; + /** + * Object property keys are in the format "slotcolor_NUMBER" + */ + selectedColors: { + [name: string]: string; + }; + /** + * Object property keys are in the format "slot_NUMBER" + */ + selectedParts: { + [name: string]: string; + }; + unlockedColors: string[]; + unlockedParts: string[]; + } + /** + * Tiered / numbered achievements the player has earned. All known properties are listed but given it's Hypixel it's subject to change fairly often. + */ + export interface PlayerAchievements { + [name: string]: undefined | number; + arcade_arcade_banker?: number; + arcade_bounty_hunter?: number; + arena_climb_the_ranks?: number; + bedwars_beds?: number; + bedwars_bedwars_killer?: number; + bedwars_collectors_edition?: number; + bedwars_level?: number; + bedwars_loot_box?: number; + bedwars_wins?: number; + buildbattle_build_battle_points?: number; + buildbattle_build_battle_score?: number; + buildbattle_build_battle_voter?: number; + buildbattle_guess_the_build_guesses?: number; + buildbattle_guess_the_build_winner?: number; + christmas2017_advent_2019?: number; + christmas2017_present_collector?: number; + christmas2017_santa_says_rounds?: number; + duels_bridge_doubles_wins?: number; + duels_bridge_duels_wins?: number; + duels_bridge_four_teams_wins?: number; + duels_bridge_teams_wins?: number; + duels_bridge_win_streak?: number; + duels_bridge_wins?: number; + duels_duels_division?: number; + duels_duels_traveller?: number; + duels_duels_win_streak?: number; + duels_duels_winner?: number; + duels_goals?: number; + duels_unique_map_wins?: number; + easter_throw_eggs?: number; + general_challenger?: number; + general_coins?: number; + general_quest_master?: number; + general_wins?: number; + gingerbread_banker?: number; + halloween2017_pumpkinator?: number; + paintball_coins?: number; + paintball_kill_streaks?: number; + paintball_kills?: number; + pit_contracts?: number; + pit_events?: number; + pit_gold?: number; + pit_kills?: number; + quake_coins?: number; + quake_headshots?: number; + quake_killing_sprees?: number; + quake_kills?: number; + quake_wins?: number; + skyblock_angler?: number; + skyblock_augmentation?: number; + skyblock_combat?: number; + skyblock_concoctor?: number; + skyblock_domesticator?: number; + skyblock_dungeoneer?: number; + skyblock_excavator?: number; + skyblock_gatherer?: number; + skyblock_harvester?: number; + skyblock_minion_lover?: number; + skyblock_slayer?: number; + skyblock_treasure_hunter?: number; + skyblock_treasury?: number; + skyblock_unique_gifts?: number; + skyclash_cards_unlocked?: number; + skywars_cages?: number; + skywars_heads?: number; + skywars_kills_solo?: number; + skywars_kills_team?: number; + skywars_kits_solo?: number; + skywars_kits_team?: number; + skywars_new_day_new_challenge?: number; + skywars_wins_lab?: number; + skywars_wins_solo?: number; + skywars_wins_team?: number; + skywars_you_re_a_star?: number; + summer_shopaholic?: number; + supersmash_hero_slayer?: number; + tntgames_block_runner?: number; + tntgames_tnt_banker?: number; + tntgames_tnt_triathlon?: number; + walls3_coins?: number; + walls3_guardian?: number; + walls3_jack_of_all_trades?: number; + walls3_rusher?: number; + } + /** + * An object where each property is the day of the reward and the value is the timestamp it was claimed. Property keys look like "dayNUMBER" e.g. day1. + * The property keys on the player object generally follow the format "adventRewardsYEAR" or "adventrewards_v2_YEAR". + * + */ + export interface PlayerAdventRewards { + [name: string]: number; + } + /** + * In addition to the all_time property, other properties may appear that have properties that start with "day_" but have the same schema as all_time. + * + */ + export interface PlayerChallenges { + [name: string]: /** + * Each property key correlates with an ID from the /resources/challenges endpoint. + * For example, a key might be "ARCADE__farm_hunt_challenge" + * + */ + PlayerChallengesObject; + all_time: /** + * Each property key correlates with an ID from the /resources/challenges endpoint. + * For example, a key might be "ARCADE__farm_hunt_challenge" + * + */ + PlayerChallengesObject; + } + /** + * Each property key correlates with an ID from the /resources/challenges endpoint. + * For example, a key might be "ARCADE__farm_hunt_challenge" + * + */ + export interface PlayerChallengesObject { + [name: string]: number; + } + export interface PlayerCompassStats { + compass?: PlayerCompassStatsChild; + npc?: PlayerCompassStatsChild; + } + export interface PlayerCompassStatsChild { + [name: string]: undefined | number; + arcade?: number; + arena?: number; + battleground?: number; + buildbattle?: number; + gingerbread?: number; + housing?: number; + hungergames?: number; + leveling?: number; + mainlobby?: number; + mcgo?: number; + miniwalls?: number; + paintball?: number; + prototype?: number; + quake?: number; + skyclash?: number; + skywars?: number; + speeduhc?: number; + supersmash?: number; + tntgames?: number; + truecombat?: number; + uhc?: number; + vampirez?: number; + walls?: number; + walls3?: number; + } + export interface PlayerCooldowns { + fun: { + event?: number; + events?: number; + event_scrambled?: number; + event_quickmaths?: number; + santaclaus?: number; + piano?: number; + whatsmyface?: number; + }; + } + export interface PlayerEugene { + dailyTwoKExp: number; + weekly_booster?: number; + } + /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + export interface PlayerEventCooldown { + [name: string]: boolean; + } + export type PlayerFireworksStorage = { + colors: string; + fade_colors: string; + flight_duration: number; + selected: boolean; + shape?: string; + trail: boolean; + twinkle: boolean; + }[]; + export interface PlayerFriendsData { + [name: string]: undefined | string[]; + friendBlocksUuid?: string[]; + friendRequests?: string[]; + friendRequestsUuid?: string[]; + } + export interface PlayerGiftingMeta { + bundlesReceived?: number; + bundlesGiven?: number; + giftsGiven?: number; + milestones?: string[]; + realBundlesGiven?: number; + realBundlesReceived?: number; + realBundlesReceivedInc?: number; + } + export interface PlayerGuildData { + guildInvites?: string[]; + guildKickReason?: string; + guildNotifications?: boolean; + } + /** + * Potentially has properties that follow format "given_cookies_NUMBER" which will be an array of strings. + */ + export interface PlayerHousingMeta { + [name: string]: + | undefined + | string + | number + | boolean + | string[] + | PlayerHousingMetaPlayerSettings; + allowedBlocks?: string[]; + firstHouseJoinMs?: number; + packages?: string[]; + playerSettings?: PlayerHousingMetaPlayerSettings; + plotSize?: string; + tutorialStep?: string; + playlist?: string; + selectedChannels_v3?: string[]; + purchasedSlots?: number; + toggle_BORDER?: boolean; + toggle_TIPS?: boolean; + visibilityDisabled?: boolean; + } + export interface PlayerHousingMetaPlayerSettings { + [name: string]: undefined | string | number; + VISIBILITY?: string; + BORDER?: string; + TIPS?: string; + customVisibility?: number; + YT_REPULSOR?: string; + } + export interface PlayerIndividualPetStats { + EXERCISE?: PlayerIndividualPetStatsCare; + HUNGER?: PlayerIndividualPetStatsCare; + THIRST?: PlayerIndividualPetStatsCare; + experience?: number; + name?: string; + } + export interface PlayerIndividualPetStatsCare { + timestamp: number; + value: number; + } + export interface PlayerInfoData { + _id: string; + uuid: string; + playername: string; + displayname: string; + firstLogin?: number; + lastLogin?: number; + lastLogout?: number; + knownAliases: string[]; + knownAliasesLower: string[]; + /** + * Timestamp of when the SkyBlock Century Cake was claimed. + */ + claimed_century_cake?: number; + /** + * Timestamp of when the Potato Basket was claimed. + */ + claimed_potato_basket?: number; + /** + * Timestamp of when the Potato Talisman was claimed. + */ + claimed_potato_talisman?: number; + monthlyPackageRank?: string; + monthlyRankColor?: string; + newPackageRank?: string; + packageRank?: string; + rank?: string; + rankPlusColor?: string; + /** + * Timestamp indicating when they purchased the rank. + */ + levelUp_NONE?: number; + /** + * Timestamp indicating when they purchased the rank. + */ + levelUp_VIP?: number; + /** + * Timestamp indicating when they purchased the rank. + */ + levelUp_VIP_PLUS?: number; + /** + * Timestamp indicating when they purchased the rank. + */ + levelUp_MVP?: number; + /** + * Timestamp indicating when they purchased the rank. + */ + levelUp_MVP_PLUS?: number; + lastClaimedReward?: number; + lastAdsenseGenerateTime?: number; + lastMapVote?: number; + mcVersionRp?: string; + mostRecentGameType?: string; + mostRecentMinecraftVersion?: number; + mostRecentMonthlyPackageRank?: string; + mostRecentlyThanked?: string; + mostRecentlyThankedUuid?: string; + mostRecentlyTipped?: string; + mostRecentlyTippedUuid?: string; + petConsumables?: /* This object describes the pet pet consumables the player has. Each property's key is the consumable name. e.g. "APPLE" or "WOOD_SWORD" */ PlayerPetConsumables; + petJourneyTimestamp?: number; + quickjoin_timestamp?: number; + quickjoin_uses?: number; + scorpius_bribe_96?: number; + testPass?: boolean; + watchdogBlockTimestamp?: number; + } + export interface PlayerMiscData { + aprilFoolsStaffClicked_0?: string[]; + anniversaryNPCProgress2020?: number; + anniversaryNPCVisited2020?: number[]; + SANTA_FINISHED?: boolean; + SANTA_QUEST_STARTED?: boolean; + compassStats?: PlayerCompassStats; + cooldowns?: PlayerCooldowns; + fireworksStorage?: PlayerFireworksStorage; + giftingMeta?: PlayerGiftingMeta; + housingMeta?: /* Potentially has properties that follow format "given_cookies_NUMBER" which will be an array of strings. */ PlayerHousingMeta; + vanityMeta?: PlayerVanityMeta; + flashingSaleClicks?: number; + flashingSaleOpens?: number; + flashingSalePoppedUp?: number; + flashingSalePopup?: number; + adventRewards2017?: /** + * An object where each property is the day of the reward and the value is the timestamp it was claimed. Property keys look like "dayNUMBER" e.g. day1. + * The property keys on the player object generally follow the format "adventRewardsYEAR" or "adventrewards_v2_YEAR". + * + */ + PlayerAdventRewards; + adventRewards2018?: /** + * An object where each property is the day of the reward and the value is the timestamp it was claimed. Property keys look like "dayNUMBER" e.g. day1. + * The property keys on the player object generally follow the format "adventRewardsYEAR" or "adventrewards_v2_YEAR". + * + */ + PlayerAdventRewards; + adventRewards_v2_2018?: /** + * An object where each property is the day of the reward and the value is the timestamp it was claimed. Property keys look like "dayNUMBER" e.g. day1. + * The property keys on the player object generally follow the format "adventRewardsYEAR" or "adventrewards_v2_YEAR". + * + */ + PlayerAdventRewards; + adventRewards2019?: /** + * An object where each property is the day of the reward and the value is the timestamp it was claimed. Property keys look like "dayNUMBER" e.g. day1. + * The property keys on the player object generally follow the format "adventRewardsYEAR" or "adventrewards_v2_YEAR". + * + */ + PlayerAdventRewards; + adventRewards_v2_2019?: /** + * An object where each property is the day of the reward and the value is the timestamp it was claimed. Property keys look like "dayNUMBER" e.g. day1. + * The property keys on the player object generally follow the format "adventRewardsYEAR" or "adventrewards_v2_YEAR". + * + */ + PlayerAdventRewards; + christmas2019Cooldowns?: /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + PlayerEventCooldown; + summer2020Cooldowns?: /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + PlayerEventCooldown; + easter2020Cooldowns?: /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + PlayerEventCooldown; + easter2020Cooldowns2?: /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + PlayerEventCooldown; + halloween2016Cooldowns?: /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + PlayerEventCooldown; + halloween2020Cooldowns?: /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + PlayerEventCooldown; + holiday2016Cooldowns?: /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + PlayerEventCooldown; + specialtyCooldowns?: /** + * Event cooldown information where the property keys are a rank + number and the values are booleans. e.g. "NORMAL0" = "TRUE". + * The property keys on the player object generally follow the format "eventCooldowns" e.g. "halloween2020Cooldowns". + * + */ + PlayerEventCooldown; + upcomingLanguageRelease_Korean?: /** + * An object describing what I assume to be testers who've logged in with a specific language. + * + */ + PlayerUpcomingLanguageRelease; + upcomingLanguageRelease_Portuguese?: /** + * An object describing what I assume to be testers who've logged in with a specific language. + * + */ + PlayerUpcomingLanguageRelease; + upcomingLanguageRelease_Russian?: /** + * An object describing what I assume to be testers who've logged in with a specific language. + * + */ + PlayerUpcomingLanguageRelease; + plotResets?: PlayerPlotResets; + } + /** + * Each property is a month and year like "8-2019" and the value contains booleans indicating which reward tier was claimed. + */ + export interface PlayerMonthlyCrates { + [name: string]: { + [name: string]: undefined | boolean; + REGULAR?: boolean; + VIP?: boolean; + VIP_PLUS?: boolean; + MVP?: boolean; + MVP_PLUS?: boolean; + }; + } + export interface PlayerOutfit { + BOOTS?: string; + CHESTPLATE?: string; + HELMET?: string; + LEGGINGS?: string; + } + /** + * Each property key describes the location of the parkour. e.g. "Prototype" or "Bedwars". + */ + export interface PlayerParkourCheckpointBests { + [name: string]: { + [name: string]: number; + }; + } + /** + * Each property key describes the location of the parkour. e.g. "Prototype" or "Bedwars". + */ + export interface PlayerParkourCompletions { + [name: string]: { + /** + * Timestamp of when this parkour was started. + */ + timeStart: number; + /** + * Time in milliseconds that it took to complete the parkour. + */ + timeTook: number; + }[]; + } + /** + * This object describes the pet pet consumables the player has. Each property's key is the consumable name. e.g. "APPLE" or "WOOD_SWORD" + */ + export interface PlayerPetConsumables { + [name: string]: number; + } + /** + * Each property key is the name of the pet the stats apply to. + */ + export interface PlayerPetStats { + [name: string]: PlayerIndividualPetStats; + } + export interface PlayerPlotResets { + /** + * Timestamp of when the reset occurred. + */ + time: number; + /** + * Minecraft UUID + */ + uuid: string; + } + export interface PlayerQuestSettings { + autoActivate?: boolean; + } + /** + * An object which has properties which match quests described by the /resources/quests endpoint. + */ + export interface PlayerQuests { + [ + name: string + ]: /* Use this own object's key to find the quest from the /resources/quests endpoint in order to interpret this information. */ PlayerQuestsInfo; + } + /** + * Use this own object's key to find the quest from the /resources/quests endpoint in order to interpret this information. + */ + export interface PlayerQuestsInfo { + active?: { + /** + * The property key is the objective name. e.g. "wins" or "2v2" + */ + objectives: { + [name: string]: number | string; + }; + started?: number; + }; + completions?: { + time: number; + }[]; + } + export interface PlayerResponse { + player: NullablePlayer; + } + export interface PlayerSettings { + [name: string]: + | undefined + | boolean + | string + | number + | { + [name: string]: string; + }; + compass?: { + [name: string]: string; + }; + allowFriendRequests?: boolean; + allowPartyRequests?: boolean; + autoSpawnPet?: boolean; + bloodVisibility?: boolean; + chatVisibility?: boolean; + duelInvitePrivacy?: string; + friendRequestPrivacy?: string; + legacyCompass?: boolean; + lobbySpeed?: boolean; + lobbyProtection?: boolean; + petVisibility?: boolean; + partyInvitePrivacy?: string; + privateMessageSounds?: boolean; + profanityLevel?: string; + profanityLevel_GUILD?: string; + profanityLevel_PARTY?: string; + profanityLevel_PM?: string; + spec_speed?: number; + } + export interface PlayerSettingsData { + language?: string; + autoDetectLanguage?: boolean; + auto_spawn_pet?: boolean; + battlePassGlowStatus?: boolean; + channel?: string; + chat?: boolean; + clock?: boolean; + collectibles_menu_sort?: string; + collectibles_menu_visibility_sort?: string; + combatTracker?: boolean; + currentClickEffect?: string; + currentCloak?: string; + currentEmote?: string; + currentGadget?: string; + currentHat?: string; + currentPet?: string; + customFilter?: string; + disableTipMessages?: boolean; + disguise?: string; + gadget?: string; + notifications?: boolean; + outfit?: PlayerOutfit; + onetime_achievement_menu_sort?: string; + onetime_achievement_menu_sort_completion_sort?: string; + particlePack?: string; + petActive?: boolean; + /** + * Particle pack, e.g. "note", "anger", "enchantment", etc. + */ + pp?: string; + questSettings?: PlayerQuestSettings; + seeRequests?: boolean; + sendCerberusMessages?: boolean; + settings?: PlayerSettings; + skin?: PlayerSkin; + socialMedia?: PlayerSocialMedia; + spec_always_flying?: boolean; + spec_auto_teleport?: boolean; + spec_first_person?: boolean; + spectators_invisible?: boolean; + tiered_achievement_menu_sort?: string; + transformation?: string; + userLanguage?: string; + vanityFavorites?: string; + wardrobe?: string; + } + export interface PlayerSkin { + signature: string; + timeoutStart: number; + value: string; + } + export type PlayerSocialMedia = PlayerSocialMediaLinks & { + [name: string]: string | boolean | PlayerSocialMediaLinks; + links: PlayerSocialMediaLinks; + prompt: boolean; + }; + export interface PlayerSocialMediaLinks { + [name: string]: undefined | string; + DISCORD?: string; + HYPIXEL?: string; + INSTAGRAM?: string; + TWITCH?: string; + TWITTER?: string; + YOUTUBE?: string; + } + /** + * The player stats object contains statistics for individual game modes. + */ + export interface PlayerStats { + [name: string]: + | undefined + | PlayerStatsGameMode + | /* Stats for bedwars. */ PlayerStatsBedwars + | PlayerStatsPit + | /* An object which properties describe each individual profile the player is a member of. */ PlayerStatsSkyBlock + | PlayerStatsWalls3 + /** + * Housing stats, generally limited to layout items - either the layout_items property will exist or there may be a property in the format of "layout_items_UUID". + * + */ + | PlayerStatsHousing; + Arcade?: PlayerStatsGameMode; + Arena?: PlayerStatsGameMode; + Battleground?: PlayerStatsGameMode; + Bedwars?: /* Stats for bedwars. */ PlayerStatsBedwars; + BuildBattle?: PlayerStatsGameMode; + Duels?: PlayerStatsGameMode; + GingerBread?: PlayerStatsGameMode; + HungerGames?: PlayerStatsGameMode; + Legacy?: PlayerStatsGameMode; + MCGO?: PlayerStatsGameMode; + MurderMystery?: PlayerStatsGameMode; + Paintball?: PlayerStatsGameMode; + Pit?: PlayerStatsPit; + Quake?: PlayerStatsGameMode; + SkyBlock?: /* An object which properties describe each individual profile the player is a member of. */ PlayerStatsSkyBlock; + SkyWars?: PlayerStatsGameMode; + SpeedUHC?: PlayerStatsGameMode; + SuperSmash?: PlayerStatsGameMode; + TNTGames?: PlayerStatsGameMode; + TrueCombat?: PlayerStatsGameMode; + UHC?: PlayerStatsGameMode; + VampireZ?: PlayerStatsGameMode; + Walls?: PlayerStatsGameMode; + Walls3?: PlayerStatsWalls3; + SkyClash?: PlayerStatsGameMode; + Housing?: /** + * Housing stats, generally limited to layout items - either the layout_items property will exist or there may be a property in the format of "layout_items_UUID". + * + */ + PlayerStatsHousing; + } + /** + * Stats for bedwars. + */ + export type PlayerStatsBedwars = PlayerStatsGameMode & + PlayerStatsBedwarsInfo & + PlayerStatsBedwarsStats; + /** + * These properties generally have to do with either settings, info (like coins, exp, items), and some universal stats. + * + * Some properties aren't listed but certain values can be expected based on the property's key. + * + * * Properties that have keys which start with "voted_" (e.g. voted_enderman) will be a boolean. + * * Properties that have keys which start with "quickjoin_uses_" (e.g. quickjoin_uses_Amazon) will be a number. + * + */ + export interface PlayerStatsBedwarsInfo { + [name: string]: + | undefined + | number + | boolean + | string + | string[] + | PlayerStatsBedwarsPrivateGamesSettings; + chest_history?: string; + chest_history_new?: string[]; + coins?: number; + Experience?: number; + Experience_new?: number; + Bedwars_openedChests?: number; + Bedwars_openedCommons?: number; + Bedwars_openedEpics?: number; + Bedwars_openedLegendaries?: number; + Bedwars_openedRares?: number; + activeBedDestroy?: string; + activeDeathCry?: string; + activeGlyph?: string; + activeIslandTopper?: string; + activeKillEffect?: string; + activeKillMessages?: string; + activeNPCSkin?: string; + activeProjectileTrail?: string; + activeSprays?: string; + activeVictoryDance?: string; + activeWoodType?: string; + favourites_1?: string; + favourites_2?: string; + first_join_7?: boolean; + understands_resource_bank?: boolean; + understands_streaks?: boolean; + privategames?: PlayerStatsBedwarsPrivateGamesSettings; + } + export interface PlayerStatsBedwarsPrivateGamesSettings { + bed_instabreak?: boolean; + disable_block_protection?: boolean; + event_time?: string; + health_buff?: string; + low_gravity?: boolean; + max_team_upgrades?: boolean; + no_diamonds?: boolean; + no_emeralds?: boolean; + one_hit_one_kill?: boolean; + respawn_time?: string; + speed?: string; + } + /** + * This interface lists keys that should be fairly common. + * All of these calls have variant specific values that get prepended by a game mode. + * + * ### Modes + * * castle_ + * * two_four_ + * * four_three_ + * * four_four_ + * * eight_one_ + * * eight_two_ + * * tourney_bedwars4s_-1_ + * * tourney_bedwars4s_0_ + * * tourney_bedwars4s_1_ + * * tourney_bedwars_two_four_0_ + * + * #### Sub Modes + * * armed_ + * * lucky_ + * * no_void_ + * * rush_ + * * ultimate_ + * * voidless_ + * + * ### Explanation + * + * So aside from the base / default mode which this interface describes, you can find the stats for a specific game mode by joining the above values. + * + * For example, if you want the "wins_bedwars" value but for rush on four four you'd find that on the key "four_four_rush_wins_bedwars", if it exists. + * + */ + export interface PlayerStatsBedwarsStats { + _items_purchased_bedwars?: number; + beds_broken_bedwars?: number; + beds_lost_bedwars?: number; + deaths_bedwars?: number; + diamond_resources_collected_bedwars?: number; + emerald_resources_collected_bedwars?: number; + entity_attack_deaths_bedwars?: number; + entity_attack_final_deaths_bedwars?: number; + entity_attack_final_kills_bedwars?: number; + entity_attack_kills_bedwars?: number; + entity_explosion_deaths_bedwars?: number; + entity_explosion_final_deaths_bedwars?: number; + entity_explosion_final_kills_bedwars?: number; + entity_explosion_kills_bedwars?: number; + fall_deaths_bedwars?: number; + fall_final_deaths_bedwars?: number; + fall_final_kills_bedwars?: number; + fall_kills_bedwars?: number; + final_deaths_bedwars?: number; + final_kills_bedwars?: number; + fire_deaths_bedwars?: number; + fire_final_deaths_bedwars?: number; + fire_tick_deaths_bedwars?: number; + fire_tick_final_deaths_bedwars?: number; + games_played_bedwars?: number; + gold_resources_collected_bedwars?: number; + iron_resources_collected_bedwars?: number; + items_purchased_bedwars?: number; + kills_bedwars?: number; + losses_bedwars?: number; + "permanent _items_purchased_bedwars"?: number; + permanent_items_purchased_bedwars?: number; + projectile_deaths_bedwars?: number; + projectile_final_deaths_bedwars?: number; + projectile_final_kills_bedwars?: number; + projectile_kills_bedwars?: number; + resources_collected_bedwars?: number; + suffocation_deaths_bedwars?: number; + void_deaths_bedwars?: number; + void_final_deaths_bedwars?: number; + void_final_kills_bedwars?: number; + void_kills_bedwars?: number; + wins_bedwars?: number; + winstreak?: number; + } + export interface PlayerStatsData { + adsense_tokens?: number; + networkExp?: number; + karma?: number; + coins?: number; + eulaCoins?: boolean; + kills?: number; + killstreaks?: number; + deaths?: number; + wins?: number; + fortuneBuff?: number; + gifts_grinch?: number; + hasTheHotPotato?: boolean; + main2017Tutorial?: boolean; + monthlycrates?: /* Each property is a month and year like "8-2019" and the value contains booleans indicating which reward tier was claimed. */ PlayerMonthlyCrates; + /** + * This property represents a version - e.g. "v0.75" + */ + network_update_book?: string; + parkourCheckpointBests?: /* Each property key describes the location of the parkour. e.g. "Prototype" or "Bedwars". */ PlayerParkourCheckpointBests; + parkourCompletions?: /* Each property key describes the location of the parkour. e.g. "Prototype" or "Bedwars". */ PlayerParkourCompletions; + petStats?: /* Each property key is the name of the pet the stats apply to. */ PlayerPetStats; + rewardConsumed?: boolean; + rewardHighScore?: number; + rewardScore?: number; + rewardStreak?: number; + skyblock_free_cookie?: number; + shots_fired?: number; + snowball_fight_intro_2019?: boolean; + stats: /* The player stats object contains statistics for individual game modes. */ PlayerStats; + thanksReceived?: number; + thanksSent?: number; + timePlaying?: number; + totalDailyRewards?: number; + totalRewards?: number; + tourney?: /* Aside from the properties in the schema this object contains properties who's keys follow a format like "GAMEMODE_TYPE_NUMBER". e.g. "sw_insane_doubles_0". These fit the "PlayerTourneyGameData" schema. */ PlayerTourney; + tournamentTokens?: number; + vanityConvertedBoxToday?: number; + vanityFirstConvertedBox?: number; + voting?: PlayerVoting; + vanityTokens?: number; + } + export interface PlayerStatsGameMode { + [name: string]: undefined | number | boolean | string | string[]; + packages?: string[]; + } + /** + * Housing stats, generally limited to layout items - either the layout_items property will exist or there may be a property in the format of "layout_items_UUID". + * + */ + export interface PlayerStatsHousing { + [name: string]: undefined | PlayerStatsHousingLayoutItems; + layout_items?: PlayerStatsHousingLayoutItems; + } + export interface PlayerStatsHousingLayoutItems { + [name: string]: string; + } + export interface PlayerStatsPit { + [name: string]: + | undefined + | number + | boolean + | string + | string[] + | PlayerStatsGameMode + | PlayerStatsPitProfile; + packages?: string[]; + pit_stats_ptl?: PlayerStatsGameMode; + profile: PlayerStatsPitProfile; + } + export interface PlayerStatsPitProfile { + [name: string]: + | undefined + | null + | number + | boolean + | string + | string[] + | PlayerStatsPitProfileBounty[] + | PlayerStatsPitProfileContract + | PlayerStatsPitProfileContract[] + | PlayerStatsPitProfileEndedContract[] + | PlayerStatsPitProfileTransaction[] + | PlayerStatsPitProfileLeaderboardStats + | /* No properties known. */ PlayerStatsPitProfileOutgoingOffer[] + | PlayerStatsPitProfileInventory + | PlayerStatsPitProfilePrestige[] + | PlayerStatsPitProfileUnlock[] + | number[]; + packages?: string[]; + bounties?: PlayerStatsPitProfileBounty[]; + cash?: number; + contract?: PlayerStatsPitProfileContract; + contract_choices?: PlayerStatsPitProfileContract[]; + death_recaps?: PlayerStatsPitProfileInventory; + ended_contracts?: PlayerStatsPitProfileEndedContract[]; + gold_transactions?: PlayerStatsPitProfileTransaction[]; + hotbar_favorites?: number[]; + inv_armor: PlayerStatsPitProfileInventory; + inv_contents: PlayerStatsPitProfileInventory; + inv_enderchest?: PlayerStatsPitProfileInventory; + item_stash?: PlayerStatsPitProfileInventory; + items_last_buy?: PlayerStatsPitProfileLastBoughtItems; + /** + * Timestamp. + */ + last_contract?: number; + /** + * Timestamp. + */ + last_midfight_disconnect?: number; + /** + * Timestamp. + */ + last_save: number; + leaderboard_stats?: PlayerStatsPitProfileLeaderboardStats; + login_messages: string[]; + outgoing_offers?: /* No properties known. */ PlayerStatsPitProfileOutgoingOffer[]; + prestiges?: PlayerStatsPitProfilePrestige[]; + /** + * Timestamp. + */ + reconessence_day?: number; + renown?: number; + renown_unlocks?: PlayerStatsPitProfileUnlock[]; + selected_killstreak_0?: string | null; + selected_killstreak_1?: string | null; + selected_killstreak_2?: string | null; + selected_killstreak_3?: string | null; + selected_perk_0?: string | null; + selected_perk_1?: string | null; + selected_perk_2?: string | null; + selected_perk_3?: string | null; + spire_stash_armor?: PlayerStatsPitProfileInventory; + spire_stash_inv?: PlayerStatsPitProfileInventory; + trade_timestamps?: number[]; + /** + * Other properties of this type might appear with the key "unlocks_NUMBER" e.g. "unlocks_10" + */ + unlocks?: PlayerStatsPitProfileUnlock[]; + xp?: number; + zero_point_three_gold_transfer?: boolean; + } + export interface PlayerStatsPitProfileBounty { + amount: number; + issuer: string; + remainingTicks: number; + timestamp: number; + } + export interface PlayerStatsPitProfileContract { + [name: string]: + | undefined + | number + | string + | /* Property key is the type of requirement. */ PlayerStatsPitProfileContractRequirements; + chunk_of_viles_reward?: number; + completion_date: number; + difficulty: string; + progress: /* Property key is the type of requirement. */ PlayerStatsPitProfileContractRequirements; + remaining_ticks: number; + requirements: /* Property key is the type of requirement. */ PlayerStatsPitProfileContractRequirements; + gold_reward: number; + key: string; + } + /** + * Property key is the type of requirement. + */ + export interface PlayerStatsPitProfileContractRequirements { + [name: string]: undefined | number; + } + export interface PlayerStatsPitProfileEndedContract { + [name: string]: + | undefined + | number + | string + | /* Property key is the type of requirement. */ PlayerStatsPitProfileContractRequirements; + chunk_of_viles_reward?: number; + completion_date: number; + difficulty: string; + progress: /* Property key is the type of requirement. */ PlayerStatsPitProfileContractRequirements; + remaining_ticks: number; + requirements: /* Property key is the type of requirement. */ PlayerStatsPitProfileContractRequirements; + } + export interface PlayerStatsPitProfileInventory { + data: number[]; + type: number; + } + export interface PlayerStatsPitProfileLastBoughtItems { + [name: string]: number; + } + export interface PlayerStatsPitProfileLeaderboardStats { + [name: string]: number; + } + /** + * No properties known. + */ + export interface PlayerStatsPitProfileOutgoingOffer { + [name: string]: unknown; + } + export interface PlayerStatsPitProfilePrestige { + index: number; + timestamp: number; + xp_on_prestige: number; + } + export interface PlayerStatsPitProfileTransaction { + amount: number; + timestamp: number; + } + export interface PlayerStatsPitProfileUnlock { + acquireDate: number; + key: string; + tier: number; + } + /** + * An object which properties describe each individual profile the player is a member of. + */ + export interface PlayerStatsSkyBlock { + profiles: { + [name: string]: { + cute_name: string; + profile_id: string; + }; + }; + } + export interface PlayerStatsWalls3 { + [name: string]: + | undefined + | number + | boolean + | string + | string[] + | /* Each property key describes a class name. */ PlayerStatsWalls3Classes; + packages?: string[]; + classes?: /* Each property key describes a class name. */ PlayerStatsWalls3Classes; + } + /** + * Each property key describes a class name. + */ + export interface PlayerStatsWalls3Classes { + [name: string]: { + [name: string]: boolean | number; + }; + } + export interface PlayerTaskData { + challenges?: /** + * In addition to the all_time property, other properties may appear that have properties that start with "day_" but have the same schema as all_time. + * + */ + PlayerChallenges; + quests?: /* An object which has properties which match quests described by the /resources/quests endpoint. */ PlayerQuests; + } + /** + * Aside from the properties in the schema this object contains properties who's keys follow a format like "GAMEMODE_TYPE_NUMBER". e.g. "sw_insane_doubles_0". These fit the "PlayerTourneyGameData" schema. + */ + export interface PlayerTourney { + [name: string]: + | undefined + | number + | string + | boolean + | { + [name: string]: number; + } + | PlayerTourneyGameData; + first_join_lobby?: number; + hide_purchased?: boolean; + playtime?: { + [name: string]: number; + }; + shop_sort?: string; + total_tributes?: number; + } + export interface PlayerTourneyGameData { + claimed_ranking_reward?: number; + first_win?: number; + games_played?: number; + playtime?: number; + seenRPbook?: boolean; + tributes_earned?: number; + } + /** + * An object describing what I assume to be testers who've logged in with a specific language. + * + */ + export interface PlayerUpcomingLanguageRelease { + logins: number; + } + export interface PlayerVanityMeta { + packages: string[]; + } + export interface PlayerVoting { + [name: string]: undefined | number; + last_mcf?: number; + last_mcipl?: number; + last_mcmp?: number; + last_mcsl?: number; + last_mcsorg?: number; + last_minestatus?: number; + last_pact?: number; + last_pmc?: number; + last_topg?: number; + last_vote?: number; + secondary_mcf?: number; + secondary_mcipl?: number; + secondary_mcmp?: number; + secondary_mcsl?: number; + secondary_mcsorg?: number; + secondary_minestatus?: number; + secondary_pact?: number; + secondary_pmc?: number; + secondary_topg?: number; + total: number; + total_mcf?: number; + total_mcipl?: number; + total_mcmp?: number; + total_mcsl?: number; + total_mcsorg?: number; + total_minestatus?: number; + total_pact?: number; + total_pmc?: number; + total_topg?: number; + votesToday?: number; + } + export type QuestDataArray = { + id: string; + name: string; + rewards: { + type: string; + amount?: number; + package?: string; + }[]; + objectives: { + id: string; + type: string; + integer?: number; + }[]; + requirements: { + type: string; + }[]; + description: string; + }[]; + export interface QuestsResourceResponse { + /** + * Whether or not the request succeeded. + */ + success: boolean; + /** + * Unix timestamp this resource was last updated. + */ + lastUpdated: number; + quests: { + [name: string]: QuestDataArray; + quake: QuestDataArray; + walls: QuestDataArray; + paintball: QuestDataArray; + hungergames: QuestDataArray; + tntgames: QuestDataArray; + vampirez: QuestDataArray; + walls3: QuestDataArray; + arcade: QuestDataArray; + arena: QuestDataArray; + uhc: QuestDataArray; + mcgo: QuestDataArray; + battleground: QuestDataArray; + supersmash: QuestDataArray; + gingerbread: QuestDataArray; + skywars: QuestDataArray; + truecombat: QuestDataArray; + skyclash: QuestDataArray; + prototype: QuestDataArray; + bedwars: QuestDataArray; + murdermystery: QuestDataArray; + buildbattle: QuestDataArray; + duels: QuestDataArray; + }; + } + export interface ResourcesResponse { + /** + * Whether or not the request succeeded. + */ + success: boolean; + /** + * Unix timestamp this resource was last updated. + */ + lastUpdated: number; + } + export interface Session { + /** + * example: + * true + */ + online: boolean; + /** + * example: + * SKYWARS + */ + gameType?: string; + /** + * example: + * ranked_normal + */ + mode?: string; + /** + * example: + * Agni Temple + */ + map?: string; + } + export interface SkyBlockAuction { + uuid: string; + auctioneer: string; + profile_id: string; + coop: string[]; + start: number; + end: number; + item_name: string; + item_lore: string; + extra: string; + category: string; + tier: string; + starting_bid: number; + claimed: boolean; + claimed_bidders: string[]; + highest_bid_amount: number; + bids: { + /** + * UUID of the auction. + */ + auction_id: string; + /** + * Minecraft UUID of the bidder. + */ + bidder: string; + /** + * The Hypixel SkyBlock profile ID of the profile the bidder was on when they placed the bid. + */ + profile_id?: string; + /** + * The amount in coins the bid is for. + */ + amount: number; + /** + * Unix timestamp the bid was placed. + */ + timestamp: number; + }[]; + bin?: boolean; + } + export interface SkyBlockAuctionResponse { + /** + * Whether or not the request succeeded. + */ + success: boolean; + auctions: { + uuid: string; + auctioneer: string; + profile_id: string; + coop: string[]; + start: number; + end: number; + item_name: string; + item_lore: string; + extra: string; + category: string; + tier: string; + starting_bid: number; + claimed: boolean; + claimed_bidders: string[]; + highest_bid_amount: number; + bids: { + /** + * UUID of the auction. + */ + auction_id: string; + /** + * Minecraft UUID of the bidder. + */ + bidder: string; + /** + * The Hypixel SkyBlock profile ID of the profile the bidder was on when they placed the bid. + */ + profile_id?: string; + /** + * The amount in coins the bid is for. + */ + amount: number; + /** + * Unix timestamp the bid was placed. + */ + timestamp: number; + }[]; + bin?: boolean; + _id: string; + item_bytes: { + type: number; + /** + * Base64 encoded NBT data for the item. + */ + data: string; + }; + }[]; + } + export interface SkyBlockAuctionsEndedResponse { + /** + * Whether or not the request succeeded. + */ + success: boolean; + lastUpdated: number; + auctions: { + /** + * Unique ID associated with the auction. + */ + auction_id: string; + /** + * Minecraft UUID of the seller. + */ + seller: string; + /** + * SkyBlock profile ID of the seller. + */ + seller_profile: string; + /** + * Minecraft UUID of the buyer. + */ + buyer: string; + /** + * Auction end timestamp. + */ + timestamp: number; + /** + * Coins the buyer spent. + */ + price: number; + /** + * Whether or not it was a buy it now auction. + */ + bin: boolean; + /** + * Base64 encoded NBT data for the item. + */ + item_bytes: string; + }[]; + } + export interface SkyBlockAuctionsResponse { + /** + * Whether or not the request succeeded. + */ + success: boolean; + page: number; + totalPages: number; + totalAuctions: number; + lastUpdated: number; + auctions: { + uuid: string; + auctioneer: string; + profile_id: string; + coop: string[]; + start: number; + end: number; + item_name: string; + item_lore: string; + extra: string; + category: string; + tier: string; + starting_bid: number; + claimed: boolean; + claimed_bidders: string[]; + highest_bid_amount: number; + bids: { + /** + * UUID of the auction. + */ + auction_id: string; + /** + * Minecraft UUID of the bidder. + */ + bidder: string; + /** + * The Hypixel SkyBlock profile ID of the profile the bidder was on when they placed the bid. + */ + profile_id?: string; + /** + * The amount in coins the bid is for. + */ + amount: number; + /** + * Unix timestamp the bid was placed. + */ + timestamp: number; + }[]; + bin?: boolean; + /** + * Base64 encoded NBT data for the item. + */ + item_bytes: string; + }[]; + } + export interface SkyBlockBazaarProduct { + product_id: string; + sell_summary: { + amount: number; + pricePerUnit: number; + orders: number; + }[]; + buy_summary: { + amount: number; + pricePerUnit: number; + orders: number; + }[]; + quick_status: { + productId: string; + sellPrice: number; + sellVolume: number; + sellMovingWeek: number; + sellOrders: number; + buyPrice: number; + buyVolume: number; + buyMovingWeek: number; + buyOrders: number; + }; + } + export interface SkyBlockBazaarResponse { + /** + * Whether or not the request succeeded. + */ + success: boolean; + lastUpdated: number; + products: { + [name: string]: SkyBlockBazaarProduct; + ANCIENT_CLAW: SkyBlockBazaarProduct; + BAZAAR_COOKIE: SkyBlockBazaarProduct; + BLAZE_ROD: SkyBlockBazaarProduct; + BLESSED_BAIT: SkyBlockBazaarProduct; + BLUE_SHARK_TOOTH: SkyBlockBazaarProduct; + BONE: SkyBlockBazaarProduct; + BOOSTER_COOKIE: SkyBlockBazaarProduct; + BROWN_MUSHROOM: SkyBlockBazaarProduct; + CACTUS: SkyBlockBazaarProduct; + CARROT_BAIT: SkyBlockBazaarProduct; + CARROT_ITEM: SkyBlockBazaarProduct; + CATALYST: SkyBlockBazaarProduct; + CLAY_BALL: SkyBlockBazaarProduct; + COAL: SkyBlockBazaarProduct; + COBBLESTONE: SkyBlockBazaarProduct; + COMPACTOR: SkyBlockBazaarProduct; + DAEDALUS_STICK: SkyBlockBazaarProduct; + DARK_BAIT: SkyBlockBazaarProduct; + DIAMOND: SkyBlockBazaarProduct; + ECTOPLASM: SkyBlockBazaarProduct; + EMERALD: SkyBlockBazaarProduct; + ENCHANTED_ACACIA_LOG: SkyBlockBazaarProduct; + ENCHANTED_ANCIENT_CLAW: SkyBlockBazaarProduct; + ENCHANTED_BAKED_POTATO: SkyBlockBazaarProduct; + ENCHANTED_BIRCH_LOG: SkyBlockBazaarProduct; + ENCHANTED_BLAZE_POWDER: SkyBlockBazaarProduct; + ENCHANTED_BLAZE_ROD: SkyBlockBazaarProduct; + ENCHANTED_BONE: SkyBlockBazaarProduct; + ENCHANTED_BONE_BLOCK: SkyBlockBazaarProduct; + ENCHANTED_BREAD: SkyBlockBazaarProduct; + ENCHANTED_BROWN_MUSHROOM: SkyBlockBazaarProduct; + ENCHANTED_CACTUS: SkyBlockBazaarProduct; + ENCHANTED_CACTUS_GREEN: SkyBlockBazaarProduct; + ENCHANTED_CAKE: SkyBlockBazaarProduct; + ENCHANTED_CARROT: SkyBlockBazaarProduct; + ENCHANTED_CARROT_ON_A_STICK: SkyBlockBazaarProduct; + ENCHANTED_CARROT_STICK: SkyBlockBazaarProduct; + ENCHANTED_CHARCOAL: SkyBlockBazaarProduct; + ENCHANTED_CLAY_BALL: SkyBlockBazaarProduct; + ENCHANTED_CLOWNFISH: SkyBlockBazaarProduct; + ENCHANTED_COAL: SkyBlockBazaarProduct; + ENCHANTED_COAL_BLOCK: SkyBlockBazaarProduct; + ENCHANTED_COBBLESTONE: SkyBlockBazaarProduct; + ENCHANTED_COCOA: SkyBlockBazaarProduct; + ENCHANTED_COOKED_FISH: SkyBlockBazaarProduct; + ENCHANTED_COOKED_MUTTON: SkyBlockBazaarProduct; + ENCHANTED_COOKED_SALMON: SkyBlockBazaarProduct; + ENCHANTED_COOKIE: SkyBlockBazaarProduct; + ENCHANTED_DARK_OAK_LOG: SkyBlockBazaarProduct; + ENCHANTED_DIAMOND: SkyBlockBazaarProduct; + ENCHANTED_DIAMOND_BLOCK: SkyBlockBazaarProduct; + ENCHANTED_EGG: SkyBlockBazaarProduct; + ENCHANTED_EMERALD: SkyBlockBazaarProduct; + ENCHANTED_EMERALD_BLOCK: SkyBlockBazaarProduct; + ENCHANTED_ENDER_PEARL: SkyBlockBazaarProduct; + ENCHANTED_ENDSTONE: SkyBlockBazaarProduct; + ENCHANTED_EYE_OF_ENDER: SkyBlockBazaarProduct; + ENCHANTED_FEATHER: SkyBlockBazaarProduct; + ENCHANTED_FERMENTED_SPIDER_EYE: SkyBlockBazaarProduct; + ENCHANTED_FIREWORK_ROCKET: SkyBlockBazaarProduct; + ENCHANTED_FLINT: SkyBlockBazaarProduct; + ENCHANTED_GHAST_TEAR: SkyBlockBazaarProduct; + ENCHANTED_GLISTERING_MELON: SkyBlockBazaarProduct; + ENCHANTED_GLOWSTONE: SkyBlockBazaarProduct; + ENCHANTED_GLOWSTONE_DUST: SkyBlockBazaarProduct; + ENCHANTED_GOLD: SkyBlockBazaarProduct; + ENCHANTED_GOLD_BLOCK: SkyBlockBazaarProduct; + ENCHANTED_GOLDEN_CARROT: SkyBlockBazaarProduct; + ENCHANTED_GRILLED_PORK: SkyBlockBazaarProduct; + ENCHANTED_GUNPOWDER: SkyBlockBazaarProduct; + ENCHANTED_HAY_BLOCK: SkyBlockBazaarProduct; + ENCHANTED_HUGE_MUSHROOM_1: SkyBlockBazaarProduct; + ENCHANTED_HUGE_MUSHROOM_2: SkyBlockBazaarProduct; + ENCHANTED_ICE: SkyBlockBazaarProduct; + ENCHANTED_INK_SACK: SkyBlockBazaarProduct; + ENCHANTED_IRON: SkyBlockBazaarProduct; + ENCHANTED_IRON_BLOCK: SkyBlockBazaarProduct; + ENCHANTED_JUNGLE_LOG: SkyBlockBazaarProduct; + ENCHANTED_LAPIS_LAZULI: SkyBlockBazaarProduct; + ENCHANTED_LAPIS_LAZULI_BLOCK: SkyBlockBazaarProduct; + ENCHANTED_LAVA_BUCKET: SkyBlockBazaarProduct; + ENCHANTED_LEATHER: SkyBlockBazaarProduct; + ENCHANTED_MAGMA_CREAM: SkyBlockBazaarProduct; + ENCHANTED_MELON: SkyBlockBazaarProduct; + ENCHANTED_MELON_BLOCK: SkyBlockBazaarProduct; + ENCHANTED_MUTTON: SkyBlockBazaarProduct; + ENCHANTED_NETHER_STALK: SkyBlockBazaarProduct; + ENCHANTED_OAK_LOG: SkyBlockBazaarProduct; + ENCHANTED_OBSIDIAN: SkyBlockBazaarProduct; + ENCHANTED_PACKED_ICE: SkyBlockBazaarProduct; + ENCHANTED_PAPER: SkyBlockBazaarProduct; + ENCHANTED_PORK: SkyBlockBazaarProduct; + ENCHANTED_POTATO: SkyBlockBazaarProduct; + ENCHANTED_PRISMARINE_CRYSTALS: SkyBlockBazaarProduct; + ENCHANTED_PRISMARINE_SHARD: SkyBlockBazaarProduct; + ENCHANTED_PUFFERFISH: SkyBlockBazaarProduct; + ENCHANTED_PUMPKIN: SkyBlockBazaarProduct; + ENCHANTED_QUARTZ: SkyBlockBazaarProduct; + ENCHANTED_QUARTZ_BLOCK: SkyBlockBazaarProduct; + ENCHANTED_RABBIT: SkyBlockBazaarProduct; + ENCHANTED_RABBIT_FOOT: SkyBlockBazaarProduct; + ENCHANTED_RABBIT_HIDE: SkyBlockBazaarProduct; + ENCHANTED_RAW_BEEF: SkyBlockBazaarProduct; + ENCHANTED_RAW_CHICKEN: SkyBlockBazaarProduct; + ENCHANTED_RAW_FISH: SkyBlockBazaarProduct; + ENCHANTED_RAW_SALMON: SkyBlockBazaarProduct; + ENCHANTED_RED_MUSHROOM: SkyBlockBazaarProduct; + ENCHANTED_REDSTONE: SkyBlockBazaarProduct; + ENCHANTED_REDSTONE_BLOCK: SkyBlockBazaarProduct; + ENCHANTED_REDSTONE_LAMP: SkyBlockBazaarProduct; + ENCHANTED_ROTTEN_FLESH: SkyBlockBazaarProduct; + ENCHANTED_SAND: SkyBlockBazaarProduct; + ENCHANTED_SEEDS: SkyBlockBazaarProduct; + ENCHANTED_SHARK_FIN: SkyBlockBazaarProduct; + ENCHANTED_SLIME_BALL: SkyBlockBazaarProduct; + ENCHANTED_SLIME_BLOCK: SkyBlockBazaarProduct; + ENCHANTED_SNOW_BLOCK: SkyBlockBazaarProduct; + ENCHANTED_SPIDER_EYE: SkyBlockBazaarProduct; + ENCHANTED_SPONGE: SkyBlockBazaarProduct; + ENCHANTED_SPRUCE_LOG: SkyBlockBazaarProduct; + ENCHANTED_STRING: SkyBlockBazaarProduct; + ENCHANTED_SUGAR: SkyBlockBazaarProduct; + ENCHANTED_SUGAR_CANE: SkyBlockBazaarProduct; + ENCHANTED_WATER_LILY: SkyBlockBazaarProduct; + ENCHANTED_WET_SPONGE: SkyBlockBazaarProduct; + ENDER_PEARL: SkyBlockBazaarProduct; + ENDER_STONE: SkyBlockBazaarProduct; + FEATHER: SkyBlockBazaarProduct; + FISH_BAIT: SkyBlockBazaarProduct; + FLINT: SkyBlockBazaarProduct; + FOUL_FLESH: SkyBlockBazaarProduct; + FUMING_POTATO_BOOK: SkyBlockBazaarProduct; + GHAST_TEAR: SkyBlockBazaarProduct; + GLOWSTONE_DUST: SkyBlockBazaarProduct; + GOLD_INGOT: SkyBlockBazaarProduct; + GOLDEN_TOOTH: SkyBlockBazaarProduct; + GRAVEL: SkyBlockBazaarProduct; + GREAT_WHITE_SHARK_TOOTH: SkyBlockBazaarProduct; + GREEN_CANDY: SkyBlockBazaarProduct; + GREEN_GIFT: SkyBlockBazaarProduct; + GRIFFIN_FEATHER: SkyBlockBazaarProduct; + HAMSTER_WHEEL: SkyBlockBazaarProduct; + HAY_BLOCK: SkyBlockBazaarProduct; + HOLY_FRAGMENT: SkyBlockBazaarProduct; + HOT_POTATO_BOOK: SkyBlockBazaarProduct; + HUGE_MUSHROOM_1: SkyBlockBazaarProduct; + HUGE_MUSHROOM_2: SkyBlockBazaarProduct; + HYPER_CATALYST: SkyBlockBazaarProduct; + ICE: SkyBlockBazaarProduct; + ICE_BAIT: SkyBlockBazaarProduct; + INK_SACK: SkyBlockBazaarProduct; + "INK_SACK:3": SkyBlockBazaarProduct; + "INK_SACK:4": SkyBlockBazaarProduct; + IRON_INGOT: SkyBlockBazaarProduct; + JACOBS_TICKET: SkyBlockBazaarProduct; + LEATHER: SkyBlockBazaarProduct; + LIGHT_BAIT: SkyBlockBazaarProduct; + LOG: SkyBlockBazaarProduct; + "LOG:1": SkyBlockBazaarProduct; + "LOG:2": SkyBlockBazaarProduct; + "LOG:3": SkyBlockBazaarProduct; + LOG_2: SkyBlockBazaarProduct; + "LOG_2:1": SkyBlockBazaarProduct; + MAGMA_CREAM: SkyBlockBazaarProduct; + MELON: SkyBlockBazaarProduct; + MINNOW_BAIT: SkyBlockBazaarProduct; + MUTTON: SkyBlockBazaarProduct; + NETHER_STALK: SkyBlockBazaarProduct; + NETHERRACK: SkyBlockBazaarProduct; + NURSE_SHARK_TOOTH: SkyBlockBazaarProduct; + OBSIDIAN: SkyBlockBazaarProduct; + OLD_FRAGMENT: SkyBlockBazaarProduct; + PACKED_ICE: SkyBlockBazaarProduct; + PORK: SkyBlockBazaarProduct; + POTATO_ITEM: SkyBlockBazaarProduct; + PRISMARINE_CRYSTALS: SkyBlockBazaarProduct; + PRISMARINE_SHARD: SkyBlockBazaarProduct; + PROTECTOR_FRAGMENT: SkyBlockBazaarProduct; + PUMPKIN: SkyBlockBazaarProduct; + PUMPKIN_GUTS: SkyBlockBazaarProduct; + PURPLE_CANDY: SkyBlockBazaarProduct; + QUARTZ: SkyBlockBazaarProduct; + RABBIT: SkyBlockBazaarProduct; + RABBIT_FOOT: SkyBlockBazaarProduct; + RABBIT_HIDE: SkyBlockBazaarProduct; + RAW_BEEF: SkyBlockBazaarProduct; + RAW_CHICKEN: SkyBlockBazaarProduct; + RAW_FISH: SkyBlockBazaarProduct; + "RAW_FISH:1": SkyBlockBazaarProduct; + "RAW_FISH:2": SkyBlockBazaarProduct; + "RAW_FISH:3": SkyBlockBazaarProduct; + RECOMBOBULATOR_3000: SkyBlockBazaarProduct; + RED_GIFT: SkyBlockBazaarProduct; + RED_MUSHROOM: SkyBlockBazaarProduct; + REDSTONE: SkyBlockBazaarProduct; + REFINED_MINERAL: SkyBlockBazaarProduct; + REVENANT_FLESH: SkyBlockBazaarProduct; + REVENANT_VISCERA: SkyBlockBazaarProduct; + ROTTEN_FLESH: SkyBlockBazaarProduct; + SAND: SkyBlockBazaarProduct; + SEEDS: SkyBlockBazaarProduct; + SHARK_BAIT: SkyBlockBazaarProduct; + SHARK_FIN: SkyBlockBazaarProduct; + SLIME_BALL: SkyBlockBazaarProduct; + SNOW_BALL: SkyBlockBazaarProduct; + SNOW_BLOCK: SkyBlockBazaarProduct; + SOUL_FRAGMENT: SkyBlockBazaarProduct; + SPIDER_EYE: SkyBlockBazaarProduct; + SPIKED_BAIT: SkyBlockBazaarProduct; + SPONGE: SkyBlockBazaarProduct; + SPOOKY_BAIT: SkyBlockBazaarProduct; + SPOOKY_SHARD: SkyBlockBazaarProduct; + STOCK_OF_STONKS: SkyBlockBazaarProduct; + STRING: SkyBlockBazaarProduct; + STRONG_FRAGMENT: SkyBlockBazaarProduct; + SUGAR_CANE: SkyBlockBazaarProduct; + SULPHUR: SkyBlockBazaarProduct; + SUMMONING_EYE: SkyBlockBazaarProduct; + SUPER_COMPACTOR_3000: SkyBlockBazaarProduct; + SUPER_EGG: SkyBlockBazaarProduct; + SUPERIOR_FRAGMENT: SkyBlockBazaarProduct; + TARANTULA_SILK: SkyBlockBazaarProduct; + TARANTULA_WEB: SkyBlockBazaarProduct; + TIGER_SHARK_TOOTH: SkyBlockBazaarProduct; + UNSTABLE_FRAGMENT: SkyBlockBazaarProduct; + WATER_LILY: SkyBlockBazaarProduct; + WEREWOLF_SKIN: SkyBlockBazaarProduct; + WHALE_BAIT: SkyBlockBazaarProduct; + WHEAT: SkyBlockBazaarProduct; + WHITE_GIFT: SkyBlockBazaarProduct; + WISE_FRAGMENT: SkyBlockBazaarProduct; + WOLF_TOOTH: SkyBlockBazaarProduct; + YOUNG_FRAGMENT: SkyBlockBazaarProduct; + }; + } + export interface SkyBlockCollectionsResourcesResponse { + /** + * Whether or not the request succeeded. + */ + success: boolean; + /** + * Unix timestamp this resource was last updated. + */ + lastUpdated: number; + /** + * SkyBlock version this resource applies to. + */ + version: string; + collections: /* Objects for each individual parent collection (currently FARMING, MINING, COMBAT, FORAGING, FISHING). */ SkyBlockResourcesParentCollections; + } + export type SkyBlockProfile = { + autodelete?: boolean; + banking?: /* Profile banking information. Only shows up if their banking API is enabled. */ SkyBlockProfileBanking; + community_upgrades?: SkyBlockProfileCommunityUpgrades; + /** + * Often this field is "ironman". + */ + game_mode?: string; + /** + * The members of this profile. The object key is their Minecraft UUID. + */ + members: { + [name: string]: SkyBlockProfileMember; + }; + profile_id: string; + } | null; + /** + * Profile banking information. Only shows up if their banking API is enabled. + */ + export interface SkyBlockProfileBanking { + balance: number; + transactions: SkyBlockProfileBankingTransaction[]; + } + export interface SkyBlockProfileBankingTransaction { + action: string; + amount: number; + initiator_name: string; + timestamp: number; + } + /** + * Each property key is the collection's item, and the value is the XP. + */ + export interface SkyBlockProfileCollection { + [name: string]: undefined | number; + BLAZE_ROD?: number; + BONE?: number; + CACTUS?: number; + CARROT_ITEM?: number; + CLAY_BALL?: number; + COAL?: number; + COBBLESTONE?: number; + DIAMOND?: number; + EMERALD?: number; + ENCHANTED_CLAY_BALL?: number; + ENCHANTED_DIAMOND?: number; + ENDER_PEARL?: number; + ENDER_STONE?: number; + FEATHER?: number; + GHAST_TEAR?: number; + GLOWSTONE_DUST?: number; + GOLD_INGOT?: number; + GRAVEL?: number; + ICE?: number; + INK_SACK?: number; + "INK_SACK:3"?: number; + "INK_SACK:4"?: number; + IRON_INGOT?: number; + LEATHER?: number; + LOG?: number; + "LOG:1"?: number; + "LOG:2"?: number; + "LOG:3"?: number; + LOG_2?: number; + "LOG_2:1"?: number; + MAGMA_CREAM?: number; + MELON?: number; + MUSHROOM_COLLECTION?: number; + MUTTON?: number; + NETHERRACK?: number; + NETHER_STALK?: number; + OBSIDIAN?: number; + PORK?: number; + POTATO_ITEM?: number; + PRISMARINE_CRYSTALS?: number; + PRISMARINE_SHARD?: number; + PUMPKIN?: number; + QUARTZ?: number; + RABBIT?: number; + RABBIT_HIDE?: number; + RAW_CHICKEN?: number; + RAW_FISH?: number; + "RAW_FISH:1"?: number; + "RAW_FISH:2"?: number; + "RAW_FISH:3"?: number; + REDSTONE?: number; + ROTTEN_FLESH?: number; + SAND?: number; + SEEDS?: number; + SLIME_BALL?: number; + SNOW_BLOCK?: number; + SPIDER_EYE?: number; + SPONGE?: number; + STRING?: number; + SUGAR_CANE?: number; + SULPHUR?: number; + WATER_LILY?: number; + WHEAT?: number; + WOOL?: number; + } + export interface SkyBlockProfileCollectionsAPI { + collection?: /* Each property key is the collection's item, and the value is the XP. */ SkyBlockProfileCollection; + /** + * An array of values, each value describing a collection tier that has been unlocked. + */ + unlocked_coll_tiers?: string[]; + } + export interface SkyBlockProfileCommunityUpgrades { + currently_upgrading: SkyBlockProfileCommunityUpgradesCurrent; + upgrade_states?: SkyBlockProfileCommunityUpgradesState[]; + } + export interface SkyBlockProfileCommunityUpgradesCurrent { + new_tier: number; + /** + * Timestamp of when it was started. + */ + start_ms: number; + upgrade: string; + /** + * Minecraft UUID of the player that started this. + */ + who_started: string; + } + export interface SkyBlockProfileCommunityUpgradesState { + /** + * Minecraft UUID of the player that claimed this. + */ + claimed_by: string; + /** + * Timestamp of when it was claimed. + */ + claimed_ms: number; + fasttracked: boolean; + /** + * Minecraft UUID of the player that started this. + */ + started_by: string; + /** + * Timestamp of when it was started. + */ + started_ms: number; + tier: number; + upgrade: string; + } + /** + * Coop invitation that the member accepted. + */ + export interface SkyBlockProfileCoopInvitation { + confirmed?: boolean; + /** + * The timestamp of when the player accepted the invite. + */ + confirmed_timestamp?: number; + /** + * The Minecraft UUID of the player who invited them. + */ + invited_by: string; + /** + * When the invitation was created. + */ + timestamp: number; + } + export type SkyBlockProfileCuteName = { + autodelete?: boolean; + banking?: /* Profile banking information. Only shows up if their banking API is enabled. */ SkyBlockProfileBanking; + community_upgrades?: SkyBlockProfileCommunityUpgrades; + /** + * Often this field is "ironman". + */ + game_mode?: string; + /** + * The members of this profile. The object key is their Minecraft UUID. + */ + members: { + [name: string]: SkyBlockProfileMember; + }; + profile_id: string; + /** + * Cute name of the profile. e.g. "Strawberry" + * example: + * Strawberry + */ + cute_name: string; + } | null; + /** + * Array of values, each value describing a dungeon NPC the profile member has spoken to. + */ + export type SkyBlockProfileDungeonBlahBlah = string[]; + export interface SkyBlockProfileDungeonClass { + experience: number; + } + export interface SkyBlockProfileDungeonJournal { + journal_entries?: { + [name: string]: undefined | SkyBlockProfileDungeonJournalEntries; + expedition_volume_1?: SkyBlockProfileDungeonJournalEntries; + expedition_volume_2?: SkyBlockProfileDungeonJournalEntries; + karylles_diary?: SkyBlockProfileDungeonJournalEntries; + the_study?: SkyBlockProfileDungeonJournalEntries; + uncanny_remains?: SkyBlockProfileDungeonJournalEntries; + }; + } + export type SkyBlockProfileDungeonJournalEntries = number[]; + export interface SkyBlockProfileDungeonType { + /** + * The property key is the floor these run stats were achieved on. + */ + best_runs?: { + [name: string]: SkyBlockProfileDungeonTypeFloorRun; + }; + /** + * The property key is the floor number this score was achieved on. + */ + best_score?: { + [name: string]: number; + }; + /** + * The amount of exp this profile member has in this dungeon type. + */ + experience?: number; + /** + * The property key is the floor number this time was achieved on. + */ + fastest_time?: { + [name: string]: number; + }; + /** + * Fastest time for an S completion. The property key is the floor number this time was achieved on. + */ + fastest_time_s?: { + [name: string]: number; + }; + /** + * Fastest time for an S+ completion. The property key is the floor number this time was achieved on. + */ + fastest_time_s_plus?: { + [name: string]: number; + }; + /** + * Highest dungeon tier the profile member has completed of this type. + */ + highest_tier_completed?: number; + /** + * The property key is the floor number these mobs were killed on. + */ + mobs_killed?: { + [name: string]: number; + }; + /** + * The most damage this profile member has dealt in a single run as an archer. The object key is the floor number. + */ + most_damage_archer?: { + [name: string]: number; + }; + /** + * The most damage this profile member has dealt in a single run as a berserker. The object key is the floor number. + */ + most_damage_berserk?: { + [name: string]: number; + }; + /** + * The most damage this profile member has dealt in a single run as a mage. The object key is the floor number. + */ + most_damage_mage?: { + [name: string]: number; + }; + /** + * The most damage this profile member has dealt in a single run as a tank. The object key is the floor number. + */ + most_damage_tank?: { + [name: string]: number; + }; + /** + * The most healing this profile member has performed in a single run. The object key is the floor number. + */ + most_healing?: { + [name: string]: number; + }; + /** + * The most mobs this profile member has killed in a single run. The object key is the floor number. + */ + most_mobs_killed?: { + [name: string]: number; + }; + /** + * The amount of times this profile member has completed each floor. The object key is the floor number. + */ + tier_completions?: { + [name: string]: number; + }; + /** + * The amount of times this profile member has attempted each floor. The object key is the floor number. + */ + times_played?: { + [name: string]: number; + }; + /** + * The amount of times this profile member has killed the watcher. The object key is the floor number. + */ + watcher_kills?: { + [name: string]: number; + }; + } + export type SkyBlockProfileDungeonTypeFloorRun = { + ally_healing?: number; + damage_dealt: number; + damage_mitigated: number; + deaths: number; + dungeon_class: string; + elapsed_time: number; + mobs_killed: number; + score_bonus: number; + score_exploration: number; + score_skill: number; + score_speed: number; + secrets_found: number; + teammates: string[]; + timestamp: number; + }[]; + export interface SkyBlockProfileInventoryAPI { + candy_inventory_contents?: SkyBlockProfileInventoryData; + ender_chest_contents?: SkyBlockProfileInventoryData; + fishing_bag?: SkyBlockProfileInventoryData; + inv_contents?: SkyBlockProfileInventoryData; + potion_bag?: SkyBlockProfileInventoryData; + quiver?: SkyBlockProfileInventoryData; + sacks_counts?: /* The contents of their sacks. */ SkyBlockProfileSacksCounts; + talisman_bag?: SkyBlockProfileInventoryData; + wardrobe_contents?: SkyBlockProfileInventoryData; + wardrobe_equipped_slot?: number; + } + export interface SkyBlockProfileInventoryData { + data: string; + type: number; + } + export interface SkyBlockProfileMember { + /** + * An array of values, each value describing an island that has been spawned by the member. e.g. "Pond Island" + */ + achievement_spawned_island_types?: string[]; + coin_purse: number; + coop_invitation?: /* Coop invitation that the member accepted. */ SkyBlockProfileCoopInvitation; + /** + * An array of values, each value describing a minion and it's tier that the player has upgraded / crafted. + */ + crafted_generators?: string[]; + death_count?: number; + dungeons?: { + dungeon_journal: SkyBlockProfileDungeonJournal; + dungeon_types: { + [name: string]: SkyBlockProfileDungeonType; + catacombs: SkyBlockProfileDungeonType; + }; + dungeons_blah_blah?: /* Array of values, each value describing a dungeon NPC the profile member has spoken to. */ SkyBlockProfileDungeonBlahBlah; + player_classes: { + [name: string]: SkyBlockProfileDungeonClass; + archer: SkyBlockProfileDungeonClass; + berserk: SkyBlockProfileDungeonClass; + healer: SkyBlockProfileDungeonClass; + mage: SkyBlockProfileDungeonClass; + tank: SkyBlockProfileDungeonClass; + }; + selected_dungeon_class?: string; + }; + fairy_exchanges?: number; + fairy_souls?: number; + fairy_souls_collected?: number; + first_join: number; + first_join_hub: number; + fishing_treasure_caught?: number; + inv_armor: SkyBlockProfileInventoryData; + last_death: number; + last_save: number; + objectives: SkyBlockProfileObjectives; + pets?: SkyBlockProfilePets; + quests: SkyBlockProfileQuests; + slayer_bosses?: SkyBlockProfileSlayerBosses; + slayer_quest?: /* Details on the profile member's currently active slayer quest. */ SkyBlockProfileSlayerQuest; + stats: SkyBlockProfileStats; + tutorial: string[]; + visited_zones: string[]; + collection?: /* Each property key is the collection's item, and the value is the XP. */ SkyBlockProfileCollection; + /** + * An array of values, each value describing a collection tier that has been unlocked. + */ + unlocked_coll_tiers?: string[]; + candy_inventory_contents?: SkyBlockProfileInventoryData; + ender_chest_contents?: SkyBlockProfileInventoryData; + fishing_bag?: SkyBlockProfileInventoryData; + inv_contents?: SkyBlockProfileInventoryData; + potion_bag?: SkyBlockProfileInventoryData; + quiver?: SkyBlockProfileInventoryData; + sacks_counts?: /* The contents of their sacks. */ SkyBlockProfileSacksCounts; + talisman_bag?: SkyBlockProfileInventoryData; + wardrobe_contents?: SkyBlockProfileInventoryData; + wardrobe_equipped_slot?: number; + experience_skill_alchemy?: number; + experience_skill_carpentry?: number; + experience_skill_combat?: number; + experience_skill_enchanting?: number; + experience_skill_farming?: number; + experience_skill_fishing?: number; + experience_skill_foraging?: number; + experience_skill_mining?: number; + experience_skill_runecrafting?: number; + experience_skill_taming?: number; + } + export interface SkyBlockProfileMemberBase { + /** + * An array of values, each value describing an island that has been spawned by the member. e.g. "Pond Island" + */ + achievement_spawned_island_types?: string[]; + coin_purse: number; + coop_invitation?: /* Coop invitation that the member accepted. */ SkyBlockProfileCoopInvitation; + /** + * An array of values, each value describing a minion and it's tier that the player has upgraded / crafted. + */ + crafted_generators?: string[]; + death_count?: number; + dungeons?: { + dungeon_journal: SkyBlockProfileDungeonJournal; + dungeon_types: { + [name: string]: SkyBlockProfileDungeonType; + catacombs: SkyBlockProfileDungeonType; + }; + dungeons_blah_blah?: /* Array of values, each value describing a dungeon NPC the profile member has spoken to. */ SkyBlockProfileDungeonBlahBlah; + player_classes: { + [name: string]: SkyBlockProfileDungeonClass; + archer: SkyBlockProfileDungeonClass; + berserk: SkyBlockProfileDungeonClass; + healer: SkyBlockProfileDungeonClass; + mage: SkyBlockProfileDungeonClass; + tank: SkyBlockProfileDungeonClass; + }; + selected_dungeon_class?: string; + }; + fairy_exchanges?: number; + fairy_souls?: number; + fairy_souls_collected?: number; + first_join: number; + first_join_hub: number; + fishing_treasure_caught?: number; + inv_armor: SkyBlockProfileInventoryData; + last_death: number; + last_save: number; + objectives: SkyBlockProfileObjectives; + pets?: SkyBlockProfilePets; + quests: SkyBlockProfileQuests; + slayer_bosses?: SkyBlockProfileSlayerBosses; + slayer_quest?: /* Details on the profile member's currently active slayer quest. */ SkyBlockProfileSlayerQuest; + stats: SkyBlockProfileStats; + tutorial: string[]; + visited_zones: string[]; + } + export interface SkyBlockProfileObjective { + [name: string]: undefined | boolean | number | string; + completed_at: number; + progress: number; + status: string; + } + export interface SkyBlockProfileObjectives { + [name: string]: undefined | SkyBlockProfileObjective; + chop_tree?: SkyBlockProfileObjective; + collect_birch_logs?: SkyBlockProfileObjective; + collect_clay?: SkyBlockProfileObjective; + collect_dark_oak_logs?: SkyBlockProfileObjective; + collect_diamond?: { + [name: string]: undefined | boolean | number | string; + completed_at: number; + progress: number; + status: string; + DIAMOND?: boolean; + }; + collect_emerald?: { + [name: string]: undefined | boolean | number | string; + completed_at: number; + progress: number; + status: string; + EMERALD?: boolean; + }; + collect_end_stone?: { + [name: string]: undefined | boolean | number | string; + completed_at: number; + progress: number; + status: string; + ENDER_STONE?: boolean; + }; + collect_farm_animal_resources?: { + [name: string]: undefined | boolean | number | string; + completed_at: number; + progress: number; + status: string; + LEATHER?: boolean; + PORK?: boolean; + RAW_CHICKEN?: boolean; + }; + collect_farm_animal_resources_2?: { + [name: string]: undefined | boolean | number | string; + completed_at: number; + progress: number; + status: string; + MUTTON?: boolean; + RABBIT?: boolean; + }; + collect_farming_resources?: { + [name: string]: undefined | boolean | number | string; + completed_at: number; + progress: number; + status: string; + CARROT_ITEM?: boolean; + MELON?: boolean; + POTATO_ITEM?: boolean; + PUMPKIN?: boolean; + }; + collect_farming_resources_2?: { + [name: string]: undefined | boolean | number | string; + completed_at: number; + progress: number; + status: string; + CACTUS?: boolean; + "INK_SACK:3"?: boolean; + SUGAR_CANE?: boolean; + }; + collect_ingots?: { + [name: string]: undefined | boolean | number | string; + completed_at: number; + progress: number; + status: string; + GOLD_INGOT?: boolean; + IRON_INGOT?: boolean; + }; + collect_lapis?: { + [name: string]: undefined | boolean | number | string; + completed_at: number; + progress: number; + status: string; + "INK_SACK:4"?: boolean; + }; + collect_log?: SkyBlockProfileObjective; + collect_nether_resources?: { + [name: string]: undefined | boolean | number | string; + completed_at: number; + progress: number; + status: string; + BLAZE_ROD?: boolean; + NETHER_STALK?: boolean; + }; + collect_nether_resources_2?: { + [name: string]: undefined | boolean | number | string; + completed_at: number; + progress: number; + status: string; + GLOWSTONE_DUST?: boolean; + MAGMA_CREAM?: boolean; + QUARTZ?: boolean; + }; + collect_obsidian?: { + [name: string]: undefined | boolean | number | string; + completed_at: number; + progress: number; + status: string; + OBSIDIAN?: boolean; + }; + collect_redstone?: { + [name: string]: undefined | boolean | number | string; + completed_at: number; + progress: number; + status: string; + REDSTONE?: boolean; + }; + collect_spider?: { + [name: string]: undefined | boolean | number | string; + completed_at: number; + progress: number; + status: string; + SPIDER_EYE?: boolean; + STRING?: boolean; + }; + collect_wheat?: SkyBlockProfileObjective; + collect_wool_carpenter?: SkyBlockProfileObjective; + complete_the_chicken_race_1?: SkyBlockProfileObjective; + complete_the_chicken_race_2?: SkyBlockProfileObjective; + complete_the_chicken_race_3?: SkyBlockProfileObjective; + complete_the_chicken_race_4?: SkyBlockProfileObjective; + complete_the_crystal_core_anything_no_return_race_1?: SkyBlockProfileObjective; + complete_the_crystal_core_anything_no_return_race_2?: SkyBlockProfileObjective; + complete_the_crystal_core_anything_no_return_race_3?: SkyBlockProfileObjective; + complete_the_crystal_core_anything_no_return_race_4?: SkyBlockProfileObjective; + complete_the_crystal_core_anything_with_return_race_1?: SkyBlockProfileObjective; + complete_the_crystal_core_no_abilities_no_return_race_1?: SkyBlockProfileObjective; + complete_the_crystal_core_no_abilities_no_return_race_2?: SkyBlockProfileObjective; + complete_the_crystal_core_no_abilities_no_return_race_3?: SkyBlockProfileObjective; + complete_the_crystal_core_no_abilities_no_return_race_4?: SkyBlockProfileObjective; + complete_the_crystal_core_no_abilities_with_return_race_1?: SkyBlockProfileObjective; + complete_the_crystal_core_no_pearls_no_return_race_1?: SkyBlockProfileObjective; + complete_the_crystal_core_no_pearls_no_return_race_2?: SkyBlockProfileObjective; + complete_the_crystal_core_no_pearls_no_return_race_3?: SkyBlockProfileObjective; + complete_the_crystal_core_no_pearls_no_return_race_4?: SkyBlockProfileObjective; + complete_the_crystal_core_no_pearls_with_return_race_1?: SkyBlockProfileObjective; + complete_the_crystal_core_no_pearls_with_return_race_2?: SkyBlockProfileObjective; + complete_the_crystal_core_nothing_no_return_race_1?: SkyBlockProfileObjective; + complete_the_crystal_core_nothing_no_return_race_2?: SkyBlockProfileObjective; + complete_the_crystal_core_nothing_no_return_race_3?: SkyBlockProfileObjective; + complete_the_crystal_core_nothing_no_return_race_4?: SkyBlockProfileObjective; + complete_the_crystal_core_nothing_with_return_race_1?: SkyBlockProfileObjective; + complete_the_end_race_1?: SkyBlockProfileObjective; + complete_the_end_race_2?: SkyBlockProfileObjective; + complete_the_end_race_3?: SkyBlockProfileObjective; + complete_the_end_race_4?: SkyBlockProfileObjective; + complete_the_giant_mushroom_anything_no_return_race_1?: SkyBlockProfileObjective; + complete_the_giant_mushroom_anything_no_return_race_2?: SkyBlockProfileObjective; + complete_the_giant_mushroom_anything_no_return_race_3?: SkyBlockProfileObjective; + complete_the_giant_mushroom_anything_no_return_race_4?: SkyBlockProfileObjective; + complete_the_giant_mushroom_anything_with_return_race_1?: SkyBlockProfileObjective; + complete_the_giant_mushroom_no_abilities_no_return_race_1?: SkyBlockProfileObjective; + complete_the_giant_mushroom_no_abilities_no_return_race_2?: SkyBlockProfileObjective; + complete_the_giant_mushroom_no_abilities_no_return_race_3?: SkyBlockProfileObjective; + complete_the_giant_mushroom_no_abilities_no_return_race_4?: SkyBlockProfileObjective; + complete_the_giant_mushroom_no_abilities_with_return_race_1?: SkyBlockProfileObjective; + complete_the_giant_mushroom_no_pearls_no_return_race_1?: SkyBlockProfileObjective; + complete_the_giant_mushroom_no_pearls_no_return_race_2?: SkyBlockProfileObjective; + complete_the_giant_mushroom_no_pearls_no_return_race_3?: SkyBlockProfileObjective; + complete_the_giant_mushroom_no_pearls_no_return_race_4?: SkyBlockProfileObjective; + complete_the_giant_mushroom_no_pearls_with_return_race_1?: SkyBlockProfileObjective; + complete_the_giant_mushroom_nothing_no_return_race_1?: SkyBlockProfileObjective; + complete_the_giant_mushroom_nothing_no_return_race_2?: SkyBlockProfileObjective; + complete_the_giant_mushroom_nothing_no_return_race_3?: SkyBlockProfileObjective; + complete_the_giant_mushroom_nothing_no_return_race_4?: SkyBlockProfileObjective; + complete_the_giant_mushroom_nothing_with_return_race_1?: SkyBlockProfileObjective; + complete_the_precursor_ruins_anything_no_return_race_1?: SkyBlockProfileObjective; + complete_the_precursor_ruins_anything_no_return_race_2?: SkyBlockProfileObjective; + complete_the_precursor_ruins_anything_no_return_race_3?: SkyBlockProfileObjective; + complete_the_precursor_ruins_anything_no_return_race_4?: SkyBlockProfileObjective; + complete_the_precursor_ruins_anything_with_return_race_1?: SkyBlockProfileObjective; + complete_the_precursor_ruins_no_abilities_no_return_race_1?: SkyBlockProfileObjective; + complete_the_precursor_ruins_no_abilities_no_return_race_2?: SkyBlockProfileObjective; + complete_the_precursor_ruins_no_abilities_no_return_race_3?: SkyBlockProfileObjective; + complete_the_precursor_ruins_no_abilities_no_return_race_4?: SkyBlockProfileObjective; + complete_the_precursor_ruins_no_abilities_with_return_race_1?: SkyBlockProfileObjective; + complete_the_precursor_ruins_no_pearls_no_return_race_1?: SkyBlockProfileObjective; + complete_the_precursor_ruins_no_pearls_no_return_race_2?: SkyBlockProfileObjective; + complete_the_precursor_ruins_no_pearls_no_return_race_3?: SkyBlockProfileObjective; + complete_the_precursor_ruins_no_pearls_no_return_race_4?: SkyBlockProfileObjective; + complete_the_precursor_ruins_no_pearls_with_return_race_1?: SkyBlockProfileObjective; + complete_the_precursor_ruins_nothing_no_return_race_1?: SkyBlockProfileObjective; + complete_the_precursor_ruins_nothing_no_return_race_2?: SkyBlockProfileObjective; + complete_the_precursor_ruins_nothing_no_return_race_3?: SkyBlockProfileObjective; + complete_the_precursor_ruins_nothing_no_return_race_4?: SkyBlockProfileObjective; + complete_the_precursor_ruins_nothing_with_return_race_1?: SkyBlockProfileObjective; + complete_the_woods_race_1?: SkyBlockProfileObjective; + complete_the_woods_race_2?: SkyBlockProfileObjective; + complete_the_woods_race_3?: SkyBlockProfileObjective; + complete_the_woods_race_4?: SkyBlockProfileObjective; + craft_wheat_minion?: SkyBlockProfileObjective; + craft_wood_pickaxe?: SkyBlockProfileObjective; + craft_workbench?: SkyBlockProfileObjective; + deposit_coins?: SkyBlockProfileObjective; + enchant_item?: SkyBlockProfileObjective; + explore_hub?: SkyBlockProfileObjective; + explore_village?: SkyBlockProfileObjective; + fight_dragon?: SkyBlockProfileObjective; + find_pickaxe?: SkyBlockProfileObjective; + give_fairy_souls?: SkyBlockProfileObjective; + give_pickaxe_lapis_miner?: SkyBlockProfileObjective; + give_rick_ingots?: SkyBlockProfileObjective; + increase_combat_skill?: SkyBlockProfileObjective; + increase_combat_skill_5?: SkyBlockProfileObjective; + increase_farming_skill?: SkyBlockProfileObjective; + increase_farming_skill_5?: SkyBlockProfileObjective; + increase_foraging_skill?: SkyBlockProfileObjective; + increase_foraging_skill_5?: SkyBlockProfileObjective; + increase_mining_skill?: SkyBlockProfileObjective; + increase_mining_skill_5?: SkyBlockProfileObjective; + kill_danger_mobs?: SkyBlockProfileObjective; + mine_coal?: SkyBlockProfileObjective; + paint_canvas?: SkyBlockProfileObjective; + public_island?: SkyBlockProfileObjective; + reach_diamond_reserve?: SkyBlockProfileObjective; + reach_dragons_nest?: SkyBlockProfileObjective; + reach_lapis_quarry?: SkyBlockProfileObjective; + reach_obsidian_sanctuary?: SkyBlockProfileObjective; + reach_pigmens_den?: SkyBlockProfileObjective; + reach_slimehill?: SkyBlockProfileObjective; + reforge_item?: SkyBlockProfileObjective; + talk_to_artist_1?: SkyBlockProfileObjective; + talk_to_artist_2?: SkyBlockProfileObjective; + talk_to_auction_master?: SkyBlockProfileObjective; + talk_to_banker?: SkyBlockProfileObjective; + talk_to_bartender?: SkyBlockProfileObjective; + talk_to_blacksmith?: SkyBlockProfileObjective; + talk_to_blacksmith_2?: SkyBlockProfileObjective; + talk_to_carpenter?: SkyBlockProfileObjective; + talk_to_charlie?: SkyBlockProfileObjective; + talk_to_charlie_2?: SkyBlockProfileObjective; + talk_to_elle?: SkyBlockProfileObjective; + talk_to_end_dealer?: SkyBlockProfileObjective; + talk_to_event_master?: SkyBlockProfileObjective; + talk_to_fairy?: SkyBlockProfileObjective; + talk_to_farmer?: SkyBlockProfileObjective; + talk_to_farmer_2?: SkyBlockProfileObjective; + talk_to_farmhand_1?: SkyBlockProfileObjective; + talk_to_farmhand_2?: SkyBlockProfileObjective; + talk_to_fisherman_1?: SkyBlockProfileObjective; + talk_to_fisherman_2?: SkyBlockProfileObjective; + talk_to_frosty?: SkyBlockProfileObjective; + talk_to_guber_1?: SkyBlockProfileObjective; + talk_to_guber_2?: SkyBlockProfileObjective; + talk_to_guber_3?: SkyBlockProfileObjective; + talk_to_guber_4?: SkyBlockProfileObjective; + talk_to_guber_5?: SkyBlockProfileObjective; + talk_to_guide?: SkyBlockProfileObjective; + talk_to_guildford_1?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_anything_no_return_1?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_anything_no_return_2?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_anything_no_return_3?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_anything_no_return_4?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_no_abilities_no_return_1?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_no_abilities_no_return_2?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_no_abilities_no_return_3?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_no_abilities_no_return_4?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_no_pearls_no_return_1?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_no_pearls_no_return_2?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_no_pearls_no_return_3?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_no_pearls_no_return_4?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_no_pearls_with_return_1?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_nothing_no_return_1?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_nothing_no_return_2?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_nothing_no_return_3?: SkyBlockProfileObjective; + talk_to_guildford_crystal_core_nothing_no_return_4?: SkyBlockProfileObjective; + talk_to_guildford_giant_mushroom_anything_no_return_1?: SkyBlockProfileObjective; + talk_to_guildford_giant_mushroom_anything_no_return_2?: SkyBlockProfileObjective; + talk_to_guildford_giant_mushroom_anything_no_return_3?: SkyBlockProfileObjective; + talk_to_guildford_giant_mushroom_anything_no_return_4?: SkyBlockProfileObjective; + talk_to_guildford_giant_mushroom_no_abilities_no_return_1?: SkyBlockProfileObjective; + talk_to_guildford_giant_mushroom_no_abilities_no_return_2?: SkyBlockProfileObjective; + talk_to_guildford_giant_mushroom_no_abilities_no_return_3?: SkyBlockProfileObjective; + talk_to_guildford_giant_mushroom_no_abilities_no_return_4?: SkyBlockProfileObjective; + talk_to_guildford_giant_mushroom_no_pearls_no_return_1?: SkyBlockProfileObjective; + talk_to_guildford_giant_mushroom_no_pearls_no_return_2?: SkyBlockProfileObjective; + talk_to_guildford_giant_mushroom_no_pearls_no_return_3?: SkyBlockProfileObjective; + talk_to_guildford_giant_mushroom_no_pearls_no_return_4?: SkyBlockProfileObjective; + talk_to_guildford_giant_mushroom_nothing_no_return_1?: SkyBlockProfileObjective; + talk_to_guildford_giant_mushroom_nothing_no_return_2?: SkyBlockProfileObjective; + talk_to_guildford_giant_mushroom_nothing_no_return_3?: SkyBlockProfileObjective; + talk_to_guildford_giant_mushroom_nothing_no_return_4?: SkyBlockProfileObjective; + talk_to_guildford_precursor_ruins_anything_no_return_1?: SkyBlockProfileObjective; + talk_to_guildford_precursor_ruins_anything_no_return_2?: SkyBlockProfileObjective; + talk_to_guildford_precursor_ruins_anything_no_return_3?: SkyBlockProfileObjective; + talk_to_guildford_precursor_ruins_anything_no_return_4?: SkyBlockProfileObjective; + talk_to_guildford_precursor_ruins_no_abilities_no_return_1?: SkyBlockProfileObjective; + talk_to_guildford_precursor_ruins_no_abilities_no_return_2?: SkyBlockProfileObjective; + talk_to_guildford_precursor_ruins_no_abilities_no_return_3?: SkyBlockProfileObjective; + talk_to_guildford_precursor_ruins_no_abilities_no_return_4?: SkyBlockProfileObjective; + talk_to_guildford_precursor_ruins_no_pearls_no_return_1?: SkyBlockProfileObjective; + talk_to_guildford_precursor_ruins_no_pearls_no_return_2?: SkyBlockProfileObjective; + talk_to_guildford_precursor_ruins_no_pearls_no_return_3?: SkyBlockProfileObjective; + talk_to_guildford_precursor_ruins_no_pearls_no_return_4?: SkyBlockProfileObjective; + talk_to_guildford_precursor_ruins_nothing_no_return_1?: SkyBlockProfileObjective; + talk_to_guildford_precursor_ruins_nothing_no_return_2?: SkyBlockProfileObjective; + talk_to_guildford_precursor_ruins_nothing_no_return_3?: SkyBlockProfileObjective; + talk_to_guildford_precursor_ruins_nothing_no_return_4?: SkyBlockProfileObjective; + talk_to_gulliver_1?: SkyBlockProfileObjective; + talk_to_gulliver_2?: SkyBlockProfileObjective; + talk_to_gulliver_3?: SkyBlockProfileObjective; + talk_to_gulliver_4?: SkyBlockProfileObjective; + talk_to_gulliver_5?: SkyBlockProfileObjective; + talk_to_gustave_1?: SkyBlockProfileObjective; + talk_to_gustave_2?: SkyBlockProfileObjective; + talk_to_gustave_3?: SkyBlockProfileObjective; + talk_to_gustave_4?: SkyBlockProfileObjective; + talk_to_gustave_5?: SkyBlockProfileObjective; + talk_to_haymitch?: SkyBlockProfileObjective; + talk_to_lapis_miner?: SkyBlockProfileObjective; + talk_to_lazy_miner?: SkyBlockProfileObjective; + talk_to_librarian?: SkyBlockProfileObjective; + talk_to_lift_operator?: SkyBlockProfileObjective; + talk_to_lumberjack?: SkyBlockProfileObjective; + talk_to_lumberjack_2?: SkyBlockProfileObjective; + talk_to_melody?: SkyBlockProfileObjective; + talk_to_pet_collector?: SkyBlockProfileObjective; + talk_to_pet_sitter?: SkyBlockProfileObjective; + talk_to_rick?: SkyBlockProfileObjective; + talk_to_telekinesis_applier?: SkyBlockProfileObjective; + warp_barn_island?: SkyBlockProfileObjective; + warp_blazing_fortress?: SkyBlockProfileObjective; + warp_deep_caverns?: SkyBlockProfileObjective; + warp_foraging_islands?: SkyBlockProfileObjective; + warp_gold_mine?: SkyBlockProfileObjective; + warp_mushroom_desert?: SkyBlockProfileObjective; + warp_spiders_den?: SkyBlockProfileObjective; + warp_the_end?: SkyBlockProfileObjective; + } + export interface SkyBlockProfilePet { + active: boolean; + candyUsed?: number; + exp: number; + heldItem?: string | null; + skin?: string | null; + tier: string; + type: string; + uuid?: string; + } + export type SkyBlockProfilePets = SkyBlockProfilePet[]; + export interface SkyBlockProfileQuest { + activated_at: number; + activated_at_sb: number; + completed_at: number; + completed_at_sb: number; + status: string; + } + export interface SkyBlockProfileQuests { + [name: string]: undefined | SkyBlockProfileQuest; + collect_log?: SkyBlockProfileQuest; + explore_hub?: SkyBlockProfileQuest; + explore_village?: SkyBlockProfileQuest; + increase_combat_skill_5?: SkyBlockProfileQuest; + increase_farming_skill_5?: SkyBlockProfileQuest; + increase_foraging_skill_5?: SkyBlockProfileQuest; + increase_mining_skill_5?: SkyBlockProfileQuest; + kill_danger_mobs?: SkyBlockProfileQuest; + reforge_item?: SkyBlockProfileQuest; + talk_to_artist_1?: SkyBlockProfileQuest; + talk_to_auction_master?: SkyBlockProfileQuest; + talk_to_banker?: SkyBlockProfileQuest; + talk_to_blacksmith?: SkyBlockProfileQuest; + talk_to_carpenter?: SkyBlockProfileQuest; + talk_to_end_dealer?: SkyBlockProfileQuest; + talk_to_farmer?: SkyBlockProfileQuest; + talk_to_farmhand_1?: SkyBlockProfileQuest; + talk_to_guber_1?: SkyBlockProfileQuest; + talk_to_guildford_1?: SkyBlockProfileQuest; + talk_to_gulliver_1?: SkyBlockProfileQuest; + talk_to_gustave_1?: SkyBlockProfileQuest; + talk_to_lapis_miner?: SkyBlockProfileQuest; + talk_to_lazy_miner?: SkyBlockProfileQuest; + talk_to_librarian?: SkyBlockProfileQuest; + talk_to_lumberjack?: SkyBlockProfileQuest; + talk_to_rick?: SkyBlockProfileQuest; + } + /** + * The contents of their sacks. + */ + export interface SkyBlockProfileSacksCounts { + [name: string]: undefined | number; + BLAZE_ROD?: number; + BONE?: number; + CACTUS?: number; + CARROT_ITEM?: number; + CLAY_BALL?: number; + COAL?: number; + COBBLESTONE?: number; + DIAMOND?: number; + DUNGEON_TRAP?: number; + EMERALD?: number; + ENDER_PEARL?: number; + ENDER_STONE?: number; + GHAST_TEAR?: number; + GLOWSTONE_DUST?: number; + GOLD_INGOT?: number; + GRAVEL?: number; + ICE?: number; + INK_SACK?: number; + "INK_SACK:3"?: number; + "INK_SACK:4"?: number; + IRON_INGOT?: number; + LEATHER?: number; + LOG?: number; + "LOG:1"?: number; + "LOG:2"?: number; + "LOG:3"?: number; + LOG_2?: number; + "LOG_2:1"?: number; + MAGMA_CREAM?: number; + MELON?: number; + MUSHROOM_COLLECTION?: number; + MUTTON?: number; + NETHERRACK?: number; + NETHER_STALK?: number; + OBSIDIAN?: number; + PORK?: number; + POTATO_ITEM?: number; + PRISMARINE_CRYSTALS?: number; + PRISMARINE_SHARD?: number; + PUMPKIN?: number; + QUARTZ?: number; + RABBIT?: number; + RAW_FISH?: number; + "RAW_FISH:1"?: number; + "RAW_FISH:2"?: number; + "RAW_FISH:3"?: number; + REDSTONE?: number; + REVENANT_FLESH?: number; + ROTTEN_FLESH?: number; + SAND?: number; + SEEDS?: number; + SLIME_BALL?: number; + SPIDER_EYE?: number; + SPONGE?: number; + STRING?: number; + SUGAR_CANE?: number; + SULPHUR?: number; + TARANTULA_WEB?: number; + WATER_LILY?: number; + WHEAT?: number; + WOLF_TOOTH?: number; + } + export interface SkyBlockProfileSkillsAPI { + experience_skill_alchemy?: number; + experience_skill_carpentry?: number; + experience_skill_combat?: number; + experience_skill_enchanting?: number; + experience_skill_farming?: number; + experience_skill_fishing?: number; + experience_skill_foraging?: number; + experience_skill_mining?: number; + experience_skill_runecrafting?: number; + experience_skill_taming?: number; + } + export interface SkyBlockProfileSlayerBoss { + [name: string]: + | undefined + | number + | { + [name: string]: undefined | boolean; + }; + boss_kills_tier_0?: number; + boss_kills_tier_1?: number; + boss_kills_tier_2?: number; + boss_kills_tier_3?: number; + claimed_levels: { + [name: string]: undefined | boolean; + level_1?: boolean; + level_2?: boolean; + level_3?: boolean; + level_4?: boolean; + level_5?: boolean; + level_6?: boolean; + }; + xp?: number; + } + export interface SkyBlockProfileSlayerBosses { + [name: string]: SkyBlockProfileSlayerBoss; + spider: SkyBlockProfileSlayerBoss; + wolf: SkyBlockProfileSlayerBoss; + zombie: SkyBlockProfileSlayerBoss; + } + /** + * Details on the profile member's currently active slayer quest. + */ + export interface SkyBlockProfileSlayerQuest { + combat_xp?: number; + completion_state: number; + kill_timestamp?: number; + last_killed_mob_island?: string; + recent_mob_kills?: { + timestamp: number; + xp: number; + }[]; + spawn_timestamp?: number; + start_timestamp: number; + tier: number; + type: string; + xp_on_last_follower_spawn?: number; + } + export interface SkyBlockProfileStats { + [name: string]: undefined | number; + auctions_bids?: number; + auctions_bought_common?: number; + auctions_bought_epic?: number; + auctions_bought_legendary?: number; + auctions_bought_rare?: number; + auctions_bought_special?: number; + auctions_bought_uncommon?: number; + auctions_completed?: number; + auctions_created?: number; + auctions_fees?: number; + auctions_gold_earned?: number; + auctions_gold_spent?: number; + auctions_highest_bid?: number; + auctions_no_bids?: number; + auctions_sold_common?: number; + auctions_sold_epic?: number; + auctions_sold_legendary?: number; + auctions_sold_rare?: number; + auctions_sold_special?: number; + auctions_sold_uncommon?: number; + auctions_won?: number; + chicken_race_best_time_2?: number; + deaths?: number; + deaths_blaze?: number; + deaths_cactus?: number; + deaths_catfish?: number; + deaths_corrupted_protector?: number; + deaths_crypt_dreadlord?: number; + deaths_crypt_lurker?: number; + deaths_crypt_souleater?: number; + deaths_diamond_guy?: number; + deaths_diamond_skeleton?: number; + deaths_diamond_zombie?: number; + deaths_dungeon_respawning_skeleton?: number; + deaths_emerald_slime?: number; + deaths_enderman?: number; + deaths_endermite?: number; + deaths_fall?: number; + deaths_fire?: number; + deaths_fireball_magma_cube?: number; + deaths_gaia_construct?: number; + deaths_generator_magma_cube?: number; + deaths_generator_slime?: number; + deaths_howling_spirit?: number; + deaths_king_midas?: number; + deaths_lapis_zombie?: number; + deaths_liquid_hot_magma?: number; + deaths_livid_clone?: number; + deaths_lost_adventurer?: number; + deaths_magma_cube?: number; + deaths_magma_cube_boss?: number; + deaths_obsidian_wither?: number; + deaths_old_dragon?: number; + deaths_old_wolf?: number; + deaths_player?: number; + deaths_professor?: number; + deaths_professor_guardian_summon?: number; + deaths_professor_mage_guardian?: number; + deaths_protector_dragon?: number; + deaths_random_slime?: number; + deaths_redstone_pigman?: number; + deaths_revenant_zombie?: number; + deaths_ruin_wolf?: number; + deaths_sadan_statue?: number; + deaths_scared_skeleton?: number; + deaths_scarf?: number; + deaths_scarf_mage?: number; + deaths_scarf_warrior?: number; + deaths_sea_guardian?: number; + deaths_shadow_assassin?: number; + deaths_skeleton?: number; + deaths_skeleton_emperor?: number; + deaths_skeleton_grunt?: number; + deaths_skeleton_master?: number; + deaths_skeleton_soldier?: number; + deaths_skeletor?: number; + deaths_sniper_skeleton?: number; + deaths_soul_of_the_alpha?: number; + deaths_spider?: number; + deaths_spider_jockey?: number; + deaths_spirit_bat?: number; + deaths_spirit_rabbit?: number; + deaths_strong_dragon?: number; + deaths_suffocation?: number; + deaths_superior_dragon?: number; + deaths_tarantula_spider?: number; + deaths_tentaclees?: number; + deaths_trap?: number; + deaths_unburried_zombie?: number; + deaths_unknown?: number; + deaths_unstable_dragon?: number; + deaths_void?: number; + deaths_voracious_spider?: number; + deaths_watcher?: number; + deaths_watcher_summon_undead?: number; + deaths_weaver_spider?: number; + deaths_wise_dragon?: number; + deaths_wither_skeleton?: number; + deaths_wolf?: number; + deaths_young_dragon?: number; + deaths_zealot_enderman?: number; + deaths_zombie?: number; + deaths_zombie_deep?: number; + deaths_zombie_grunt?: number; + deaths_zombie_soldier?: number; + dungeon_hub_crystal_core_anything_no_return_best_time?: number; + dungeon_hub_crystal_core_anything_with_return_best_time?: number; + dungeon_hub_crystal_core_no_abilities_no_return_best_time?: number; + dungeon_hub_crystal_core_no_pearls_no_return_best_time?: number; + dungeon_hub_crystal_core_no_pearls_with_return_best_time?: number; + dungeon_hub_crystal_core_nothing_no_return_best_time?: number; + dungeon_hub_giant_mushroom_anything_no_return_best_time?: number; + dungeon_hub_giant_mushroom_no_abilities_no_return_best_time?: number; + dungeon_hub_giant_mushroom_no_pearls_no_return_best_time?: number; + dungeon_hub_giant_mushroom_nothing_no_return_best_time?: number; + dungeon_hub_precursor_ruins_anything_no_return_best_time?: number; + dungeon_hub_precursor_ruins_no_abilities_no_return_best_time?: number; + dungeon_hub_precursor_ruins_no_pearls_no_return_best_time?: number; + dungeon_hub_precursor_ruins_nothing_no_return_best_time?: number; + end_race_best_time?: number; + ender_crystals_destroyed?: number; + foraging_race_best_time?: number; + gifts_given?: number; + gifts_received?: number; + highest_crit_damage?: number; + highest_critical_damage?: number; + items_fished?: number; + items_fished_large_treasure?: number; + items_fished_normal?: number; + items_fished_treasure?: number; + kills?: number; + kills_bat_pinata?: number; + kills_bat_spooky?: number; + kills_batty_witch?: number; + kills_blaze?: number; + kills_blaze_higher_or_lower?: number; + kills_blue_shark?: number; + kills_bonzo_summon_undead?: number; + kills_brood_mother_cave_spider?: number; + kills_brood_mother_spider?: number; + kills_carrot_king?: number; + kills_catfish?: number; + kills_cave_spider?: number; + kills_cellar_spider?: number; + kills_chicken?: number; + kills_chicken_deep?: number; + kills_corrupted_protector?: number; + kills_cow?: number; + kills_creeper?: number; + kills_crypt_dreadlord?: number; + kills_crypt_lurker?: number; + kills_crypt_souleater?: number; + kills_crypt_tank_zombie?: number; + kills_crypt_undead?: number; + kills_crypt_undead_alexander?: number; + kills_crypt_undead_apunch?: number; + kills_crypt_undead_bernhard?: number; + kills_crypt_undead_christian?: number; + kills_crypt_undead_codename_b?: number; + kills_crypt_undead_connorlinfoot?: number; + kills_crypt_undead_dctr?: number; + kills_crypt_undead_friedrich?: number; + kills_crypt_undead_jayavarmen?: number; + kills_crypt_undead_likaos?: number; + kills_crypt_undead_marius?: number; + kills_crypt_undead_nicholas?: number; + kills_crypt_undead_nitroholic_?: number; + kills_crypt_undead_pieter?: number; + kills_crypt_undead_relenter?: number; + kills_crypt_undead_sfarnham?: number; + kills_crypt_undead_valentin?: number; + kills_crypt_witherskeleton?: number; + kills_dasher_spider?: number; + kills_deep_sea_protector?: number; + kills_diamond_guy?: number; + kills_diamond_skeleton?: number; + kills_diamond_zombie?: number; + kills_dungeon_respawning_skeleton?: number; + kills_dungeon_respawning_skeleton_skull?: number; + kills_dungeon_secret_bat?: number; + kills_emerald_slime?: number; + kills_enderman?: number; + kills_endermite?: number; + kills_fireball_magma_cube?: number; + kills_forest_island_bat?: number; + kills_frosty_the_snowman?: number; + kills_frozen_steve?: number; + kills_gaia_construct?: number; + kills_generator_ghast?: number; + kills_generator_magma_cube?: number; + kills_generator_slime?: number; + kills_ghast?: number; + kills_guardian_defender?: number; + kills_guardian_emperor?: number; + kills_horseman_bat?: number; + kills_horseman_horse?: number; + kills_horseman_zombie?: number; + kills_howling_spirit?: number; + kills_invisible_creeper?: number; + kills_jockey_shot_silverfish?: number; + kills_jockey_skeleton?: number; + kills_king_midas?: number; + kills_lapis_zombie?: number; + kills_liquid_hot_magma?: number; + kills_lonely_spider?: number; + kills_lost_adventurer?: number; + kills_magma_cube?: number; + kills_magma_cube_boss?: number; + kills_minos_hunter?: number; + kills_minotaur?: number; + kills_night_respawning_skeleton?: number; + kills_night_squid?: number; + kills_nurse_shark?: number; + kills_obsidian_wither?: number; + kills_old_wolf?: number; + kills_pack_spirit?: number; + kills_parasite?: number; + kills_phantom_spirit?: number; + kills_pig?: number; + kills_pigman?: number; + kills_player?: number; + kills_pond_squid?: number; + kills_professor_guardian_summon?: number; + kills_protector_dragon?: number; + kills_rabbit?: number; + kills_random_slime?: number; + kills_redstone_pigman?: number; + kills_respawning_skeleton?: number; + kills_revenant_zombie?: number; + kills_ruin_wolf?: number; + kills_scared_skeleton?: number; + kills_scarf_archer?: number; + kills_scarf_mage?: number; + kills_scarf_priest?: number; + kills_scarf_warrior?: number; + kills_scary_jerry?: number; + kills_sea_archer?: number; + kills_sea_guardian?: number; + kills_sea_leech?: number; + kills_sea_walker?: number; + kills_sea_witch?: number; + kills_shadow_assassin?: number; + kills_sheep?: number; + kills_siamese_lynx?: number; + kills_skeleton?: number; + kills_skeleton_emperor?: number; + kills_skeleton_grunt?: number; + kills_skeleton_master?: number; + kills_skeleton_soldier?: number; + kills_skeletor?: number; + kills_slime?: number; + kills_sniper_skeleton?: number; + kills_soul_of_the_alpha?: number; + kills_spider?: number; + kills_spider_jockey?: number; + kills_spirit_bat?: number; + kills_spirit_bull?: number; + kills_spirit_chicken?: number; + kills_spirit_miniboss?: number; + kills_spirit_rabbit?: number; + kills_spirit_sheep?: number; + kills_spirit_wolf?: number; + kills_splitter_spider?: number; + kills_splitter_spider_silverfish?: number; + kills_strong_dragon?: number; + kills_super_archer?: number; + kills_super_tank_zombie?: number; + kills_tarantula_spider?: number; + kills_tentaclees?: number; + kills_tiger_shark?: number; + kills_trick_or_treater?: number; + kills_unburried_zombie?: number; + kills_voracious_spider?: number; + kills_watcher?: number; + kills_watcher_bonzo?: number; + kills_watcher_summon_undead?: number; + kills_water_hydra?: number; + kills_weaver_spider?: number; + kills_witch?: number; + kills_witch_bat?: number; + kills_wither_gourd?: number; + kills_wither_skeleton?: number; + kills_wraith?: number; + kills_zealot_enderman?: number; + kills_zombie?: number; + kills_zombie_deep?: number; + kills_zombie_grunt?: number; + kills_zombie_knight?: number; + kills_zombie_soldier?: number; + kills_zombie_villager?: number; + most_winter_cannonballs_hit?: number; + most_winter_damage_dealt?: number; + most_winter_magma_damage_dealt?: number; + most_winter_snowballs_hit?: number; + mythos_burrows_chains_complete?: number; + mythos_burrows_chains_complete_COMMON?: number; + mythos_burrows_chains_complete_RARE?: number; + mythos_burrows_chains_complete_null?: number; + mythos_burrows_dug_combat?: number; + mythos_burrows_dug_combat_COMMON?: number; + mythos_burrows_dug_combat_RARE?: number; + mythos_burrows_dug_combat_null?: number; + mythos_burrows_dug_next?: number; + mythos_burrows_dug_next_COMMON?: number; + mythos_burrows_dug_next_RARE?: number; + mythos_burrows_dug_next_null?: number; + mythos_burrows_dug_treasure?: number; + mythos_burrows_dug_treasure_COMMON?: number; + mythos_burrows_dug_treasure_RARE?: number; + mythos_burrows_dug_treasure_null?: number; + mythos_kills?: number; + pet_milestone_ores_mined?: number; + pet_milestone_sea_creatures_killed?: number; + } + export interface SkyBlockResourcesCollection { + /** + * Name of the collection. + */ + name: string; + /** + * The maximum tier of this collection. + */ + maxTiers: number; + tiers: /* Individual tier within the collection. */ SkyBlockResourcesCollectionTier[]; + } + /** + * Individual tier within the collection. + */ + export interface SkyBlockResourcesCollectionTier { + /** + * The collection tier this applies to. + */ + tier?: number; + /** + * The amount of the collection resource required to unlock this. + */ + amountRequired?: number; + /** + * An array of strings describing the individual unlocks of this collection. + */ + unlocks?: string[]; + } + export interface SkyBlockResourcesParentCollection { + /** + * Name of the collection group. + */ + name: string; + /** + * Objects for each individual collection within the parent (e.g. WHEAT, SAND). + */ + items: { + [name: string]: SkyBlockResourcesCollection; + }; + } + /** + * Objects for each individual parent collection (currently FARMING, MINING, COMBAT, FORAGING, FISHING). + */ + export interface SkyBlockResourcesParentCollections { + [name: string]: SkyBlockResourcesParentCollection; + FARMING: SkyBlockResourcesParentCollection; + MINING: SkyBlockResourcesParentCollection; + COMBAT: SkyBlockResourcesParentCollection; + FORAGING: SkyBlockResourcesParentCollection; + FISHING: SkyBlockResourcesParentCollection; + } + export interface SkyBlockResourcesSkill { + /** + * Name of the skill. + */ + name: string; + /** + * Description for the skill. + */ + description: string; + /** + * The max attainable level for the skill. + */ + maxLevel: number; + /** + * Array of skills. + */ + levels: SkyBlockResourcesSkillLevel[]; + } + export interface SkyBlockResourcesSkillLevel { + /** + * The skill level this applies to. + */ + level: number; + /** + * The amount of EXP required to reach this level. + */ + totalExpRequired: number; + /** + * An array of strings describing what this skill unlocks. + */ + unlocks: string[]; + } + /** + * Objects for each skill. + */ + export interface SkyBlockResourcesSkills { + [name: string]: SkyBlockResourcesSkill; + FARMING: SkyBlockResourcesSkill; + MINING: SkyBlockResourcesSkill; + COMBAT: SkyBlockResourcesSkill; + DUNGEONEERING: SkyBlockResourcesSkill; + FORAGING: SkyBlockResourcesSkill; + FISHING: SkyBlockResourcesSkill; + ENCHANTING: SkyBlockResourcesSkill; + ALCHEMY: SkyBlockResourcesSkill; + CARPENTRY: SkyBlockResourcesSkill; + RUNECRAFTING: SkyBlockResourcesSkill; + TAMING: SkyBlockResourcesSkill; + } + export interface SkyBlockSkillsResourcesResponse { + /** + * Whether or not the request succeeded. + */ + success: boolean; + /** + * Unix timestamp this resource was last updated. + */ + lastUpdated: number; + /** + * SkyBlock version this resource applies to. + */ + version: string; + collections: /* Objects for each skill. */ SkyBlockResourcesSkills; + } + } +} +export declare namespace Paths { + namespace Boosters { + namespace Get { + namespace Responses { + /** + * example: + * { + * "boosters": [ + * { + * "_id": "5c197fadc8f245280926413d", + * "purchaserUuid": "978ddb705a8e43618e41749178c020b0", + * "amount": 2, + * "originalLength": 3600, + * "length": 3595, + * "gameType": 24, + * "stacked": true, + * "dateActivated": 1545244519133 + * }, + * { + * "_id": "5e8c92270cf287986cd00dbf", + * "purchaserUuid": "dfe1bb0a4220421486506ba487cdb530", + * "amount": 3, + * "originalLength": 3600, + * "length": 3600, + * "gameType": 23, + * "dateActivated": 1586351429371, + * "stacked": true + * }, + * { + * "_id": "5fa1dc680cf24688841100c6", + * "purchaserUuid": "e1b2397ee9ef4809a312fc3ee2d4bdbd", + * "amount": 3, + * "originalLength": 3600, + * "length": 3393, + * "gameType": 20, + * "dateActivated": 1604443410659, + * "stacked": [ + * "bf9afb33-c4ab-4eee-afa7-108403ba6532", + * "ef0e153b-d489-435d-b5f7-0e712c1a6bf9", + * "99e62635-bf44-4ca4-8fc4-380b1803bf57", + * "c3eeac1a-83df-4005-acc6-84eb940cbb53" + * ] + * }, + * { + * "_id": "5fa1e1180cf2468884110118", + * "purchaserUuid": "7c90efd8d3724dfe9c4b5d7ff23b8691", + * "amount": 2, + * "originalLength": 3600, + * "length": 3600, + * "gameType": 20, + * "dateActivated": 1604444496616 + * } + * ], + * "boosterState": { + * "decrementing": true + * } + * } + */ + export interface $200 { + /** + * Whether or not the request succeeded. + */ + success: boolean; + boosters: { + _id: string; + purchaserUuid: string; + amount: number; + originalLength: number; + length: number; + gameType: number; + stacked?: boolean | string[]; + dateActivated: number; + }[]; + boosterState: { + decrementing: boolean; + }; + } + export type $400 = Components.Responses.MissingFields; + export type $403 = Components.Responses.Unauthorized; + export type $429 = Components.Responses.RateLimitError; + } + } + } + namespace FindGuild { + namespace Get { + namespace Responses { + export interface $200 { + /** + * Whether or not the request succeeded. + */ + success: boolean; + /** + * example: + * 5985b1930cf28d110c2dac07 + */ + guild: string | null; + } + export type $400 = Components.Schemas.ApiError; + export type $403 = Components.Responses.Unauthorized; + export type $422 = Components.Responses.MalformedUUID; + export type $429 = Components.Responses.RateLimitError; + } + } + } + namespace Friends { + namespace Get { + namespace Responses { + /** + * example: + * { + * "records": [ + * { + * "_id": "5eb97d170cf22f431e8d6170", + * "uuidSender": "20934ef9488c465180a78f861586b4cf", + * "uuidReceiver": "7486aa03aca5470e888dde8a43eb8c10", + * "started": 1589214487454 + * }, + * { + * "_id": "5eb97d180cf22f431e8d6171", + * "uuidSender": "20934ef9488c465180a78f861586b4cf", + * "uuidReceiver": "9926753a434e4b46a07625993a07b8ef", + * "started": 1589214488015 + * }, + * { + * "_id": "5eb97d180cf22f431e8d6172", + * "uuidSender": "20934ef9488c465180a78f861586b4cf", + * "uuidReceiver": "b1f3957b2a1148298b55a9143548bbaa", + * "started": 1589214488334 + * }, + * { + * "_id": "5eb97d180cf22f431e8d6173", + * "uuidSender": "20934ef9488c465180a78f861586b4cf", + * "uuidReceiver": "4f9fceb6b17144058c6ef9ba4cfe3805", + * "started": 1589214488791 + * } + * ] + * } + */ + export interface $200 { + /** + * Whether or not the request succeeded. + */ + success: boolean; + records: { + _id: string; + uuidSender: string; + uuidReceiver: string; + started: number; + }[]; + } + export type $400 = Components.Responses.MissingFields; + export type $403 = Components.Responses.Unauthorized; + export type $422 = Components.Responses.MalformedUUID; + export type $429 = Components.Responses.RateLimitError; + } + } + } + namespace GameCounts { + namespace Get { + namespace Responses { + export interface $200 { + /** + * Whether or not the request succeeded. + */ + success: boolean; + /** + * Total players on the network + * example: + * 77238 + */ + playerCount: number; + /** + * example: + * { + * "MAIN_LOBBY": { + * "players": 400 + * }, + * "TOURNAMENT_LOBBY": { + * "players": 7 + * }, + * "UHC": { + * "players": 796, + * "modes": { + * "TEAMS": 399, + * "SOLO": 331 + * } + * }, + * "SUPER_SMASH": { + * "players": 91, + * "modes": { + * "1v1_normal": 7, + * "friends_normal": 4, + * "solo_normal": 11, + * "2v2_normal": 32, + * "teams_normal": 8 + * } + * }, + * "LEGACY": { + * "players": 308, + * "modes": { + * "QUAKECRAFT": 18, + * "WALLS": 83, + * "VAMPIREZ": 95, + * "ARENA": 8, + * "PAINTBALL": 37, + * "GINGERBREAD": 19 + * } + * }, + * "BUILD_BATTLE": { + * "players": 1329, + * "modes": { + * "BUILD_BATTLE_HALLOWEEN": 32, + * "BUILD_BATTLE_SOLO_NORMAL_LATEST": 256, + * "BUILD_BATTLE_GUESS_THE_BUILD": 150, + * "BUILD_BATTLE_TEAMS_NORMAL": 478, + * "BUILD_BATTLE_SOLO_NORMAL": 171, + * "BUILD_BATTLE_SOLO_PRO": 81 + * } + * }, + * "BATTLEGROUND": { + * "players": 80, + * "modes": { + * "ctf_mini": 60, + * "domination": 1, + * "team_deathmatch": 5 + * } + * }, + * "WALLS3": { + * "players": 290, + * "modes": { + * "standard": 261, + * "face_off": 5 + * } + * }, + * "HOUSING": { + * "players": 3511 + * }, + * "SPEED_UHC": { + * "players": 43, + * "modes": { + * "team_normal": 18, + * "solo_normal": 25 + * } + * }, + * "DUELS": { + * "players": 5745, + * "modes": { + * "DUELS_BOWSPLEEF_DUEL": 61, + * "DUELS_BRIDGE_2V2V2V2": 12, + * "DUELS_BOW_DUEL": 40, + * "DUELS_UHC_FOUR": 91, + * "DUELS_MW_DUEL": 44, + * "DUELS_UHC_MEETUP": 78, + * "DUELS_BRIDGE_DOUBLES": 287, + * "DUELS_SW_DOUBLES": 224, + * "DUELS_UHC_DOUBLES": 114, + * "DUELS_BRIDGE_FOUR": 94, + * "DUELS_BRIDGE_3V3V3V3": 39, + * "DUELS_SUMO_DUEL": 184, + * "DUELS_UHC_DUEL": 583, + * "DUELS_OP_DOUBLES": 48, + * "DUELS_OP_DUEL": 132, + * "DUELS_MW_DOUBLES": 4, + * "DUELS_BLITZ_DUEL": 118, + * "DUELS_POTION_DUEL": 26, + * "DUELS_CLASSIC_DUEL": 430, + * "DUELS_COMBO_DUEL": 48, + * "DUELS_BRIDGE_DUEL": 1443, + * "DUELS_SW_DUEL": 616 + * } + * }, + * "REPLAY": { + * "players": 18, + * "modes": { + * "BASE": 18 + * } + * }, + * "SURVIVAL_GAMES": { + * "players": 390, + * "modes": { + * "solo_normal": 171, + * "teams_normal": 154 + * } + * }, + * "PROTOTYPE": { + * "players": 527, + * "modes": { + * "TOWERWARS_SOLO": 33, + * "TOWERWARS_TEAM_OF_TWO": 33 + * } + * }, + * "MURDER_MYSTERY": { + * "players": 1416, + * "modes": { + * "MURDER_DOUBLE_UP": 360, + * "MURDER_INFECTION": 120, + * "MURDER_ASSASSINS": 129, + * "MURDER_CLASSIC": 627 + * } + * }, + * "MCGO": { + * "players": 147, + * "modes": { + * "normal": 84, + * "normal_party": 8, + * "deathmatch": 35 + * } + * }, + * "BEDWARS": { + * "players": 23917, + * "modes": { + * "BEDWARS_TWO_FOUR": 788, + * "BEDWARS_FOUR_THREE": 4052, + * "BEDWARS_FOUR_FOUR_RUSH": 3, + * "BEDWARS_FOUR_FOUR_LUCKY": 18, + * "BEDWARS_EIGHT_ONE": 2525, + * "BEDWARS_EIGHT_TWO_VOIDLESS": 7, + * "BEDWARS_EIGHT_TWO_RUSH": 10, + * "BEDWARS_FOUR_FOUR_ARMED": 858, + * "BEDWARS_EIGHT_TWO_ARMED": 642, + * "BEDWARS_FOUR_FOUR": 5090, + * "BEDWARS_EIGHT_TWO": 6784, + * "BEDWARS_EIGHT_TWO_LUCKY": 35 + * } + * }, + * "SKYBLOCK": { + * "players": 33850, + * "modes": { + * "combat_1": 533, + * "dungeon_hub": 1022, + * "foraging_1": 794, + * "hub": 9291, + * "mining_2": 1111, + * "dungeon": 2823, + * "combat_2": 383, + * "farming_2": 186, + * "mining_1": 351, + * "farming_1": 169, + * "combat_3": 1641, + * "dynamic": 15547 + * } + * }, + * "ARCADE": { + * "players": 2665, + * "modes": { + * "PARTY": 583, + * "HOLE_IN_THE_WALL": 20, + * "DEFENDER": 44, + * "MINI_WALLS": 121, + * "SIMON_SAYS": 78, + * "ZOMBIES_BAD_BLOOD": 23, + * "HIDE_AND_SEEK_PARTY_POOPER": 48, + * "DAYONE": 133, + * "DRAW_THEIR_THING": 54, + * "ZOMBIES_ALIEN_ARCADIUM": 117, + * "ONEINTHEQUIVER": 49, + * "SOCCER": 37, + * "PVP_CTW": 380, + * "THROW_OUT": 14, + * "ENDER": 25, + * "STARWARS": 51, + * "HALLOWEEN_SIMULATOR": 92, + * "DRAGONWARS2": 20, + * "ZOMBIES_DEAD_END": 244, + * "HIDE_AND_SEEK_PROP_HUNT": 86, + * "FARM_HUNT": 93 + * } + * }, + * "PIT": { + * "players": 974, + * "modes": { + * "PIT": 974 + * } + * }, + * "TNTGAMES": { + * "players": 948, + * "modes": { + * "PVPRUN": 26, + * "TNTAG": 467, + * "TNTRUN": 246, + * "BOWSPLEEF": 64, + * "CAPTURE": 39 + * } + * }, + * "SKYWARS": { + * "players": 6287, + * "modes": { + * "solo_insane_lucky": 233, + * "solo_insane_slime": 10, + * "teams_insane_lucky": 160, + * "solo_normal": 1416, + * "teams_insane": 607, + * "solo_insane_hunters_vs_beasts": 2, + * "ranked_normal": 264, + * "solo_insane_tnt_madness": 87, + * "mega_doubles": 8, + * "solo_insane": 1810, + * "teams_insane_tnt_madness": 3, + * "teams_normal": 631, + * "mega_normal": 89 + * } + * }, + * "LIMBO": { + * "players": 153 + * }, + * "IDLE": { + * "players": 8475 + * }, + * "QUEUE": { + * "players": 0 + * } + * } + */ + games: { + [name: string]: { + players: number; + modes?: { + [name: string]: number; + }; + }; + MAIN_LOBBY: { + players: number; + }; + TOURNAMENT_LOBBY: { + players: number; + }; + UHC: { + players: number; + modes: { + [name: string]: number; + TEAMS: number; + SOLO: number; + }; + }; + SUPER_SMASH: { + players: number; + modes: { + [name: string]: number; + $1v1_normal: number; + friends_normal: number; + solo_normal: number; + $2v2_normal: number; + teams_normal: number; + }; + }; + LEGACY: { + players: number; + modes: { + [name: string]: number; + QUAKECRAFT: number; + WALLS: number; + VAMPIREZ: number; + ARENA: number; + PAINTBALL: number; + GINGERBREAD: number; + }; + }; + BUILD_BATTLE: { + players: number; + modes: { + [name: string]: number; + BUILD_BATTLE_SOLO_NORMAL_LATEST: number; + BUILD_BATTLE_GUESS_THE_BUILD: number; + BUILD_BATTLE_TEAMS_NORMAL: number; + BUILD_BATTLE_SOLO_NORMAL: number; + BUILD_BATTLE_SOLO_PRO: number; + }; + }; + BATTLEGROUND: { + players: number; + modes: { + [name: string]: number; + ctf_mini: number; + domination: number; + team_deathmatch: number; + }; + }; + WALLS3: { + players: number; + modes: { + [name: string]: number; + standard: number; + face_off: number; + }; + }; + HOUSING: { + players: number; + }; + SPEED_UHC: { + players: number; + modes: { + [name: string]: number; + team_normal: number; + solo_normal: number; + }; + }; + DUELS: { + players: number; + modes: { + [name: string]: number; + DUELS_BOWSPLEEF_DUEL: number; + DUELS_BRIDGE_2V2V2V2: number; + DUELS_BOW_DUEL: number; + DUELS_UHC_FOUR: number; + DUELS_MW_DUEL: number; + DUELS_UHC_MEETUP: number; + DUELS_BRIDGE_DOUBLES: number; + DUELS_SW_DOUBLES: number; + DUELS_UHC_DOUBLES: number; + DUELS_BRIDGE_FOUR: number; + DUELS_BRIDGE_3V3V3V3: number; + DUELS_SUMO_DUEL: number; + DUELS_UHC_DUEL: number; + DUELS_OP_DOUBLES: number; + DUELS_OP_DUEL: number; + DUELS_MW_DOUBLES: number; + DUELS_BLITZ_DUEL: number; + DUELS_POTION_DUEL: number; + DUELS_CLASSIC_DUEL: number; + DUELS_COMBO_DUEL: number; + DUELS_BRIDGE_DUEL: number; + DUELS_SW_DUEL: number; + }; + }; + REPLAY: { + players: number; + modes: { + [name: string]: number; + BASE: number; + }; + }; + SURVIVAL_GAMES: { + players: number; + modes: { + [name: string]: number; + solo_normal: number; + teams_normal: number; + }; + }; + PROTOTYPE: { + players: number; + modes: { + TOWERWARS_SOLO: number; + TOWERWARS_TEAM_OF_TWO: number; + }; + }; + MURDER_MYSTERY: { + players: number; + modes: { + [name: string]: number; + MURDER_DOUBLE_UP: number; + MURDER_INFECTION: number; + MURDER_ASSASSINS: number; + MURDER_CLASSIC: number; + }; + }; + MCGO: { + players: number; + modes: { + [name: string]: number; + normal: number; + normal_party: number; + deathmatch: number; + }; + }; + BEDWARS: { + players: number; + modes: { + [name: string]: number; + BEDWARS_TWO_FOUR: number; + BEDWARS_FOUR_THREE: number; + BEDWARS_FOUR_FOUR_RUSH: number; + BEDWARS_FOUR_FOUR_LUCKY: number; + BEDWARS_EIGHT_ONE: number; + BEDWARS_EIGHT_TWO_VOIDLESS: number; + BEDWARS_EIGHT_TWO_RUSH: number; + BEDWARS_FOUR_FOUR_ARMED: number; + BEDWARS_EIGHT_TWO_ARMED: number; + BEDWARS_FOUR_FOUR: number; + BEDWARS_EIGHT_TWO: number; + BEDWARS_EIGHT_TWO_LUCKY: number; + }; + }; + SKYBLOCK: { + players: number; + modes: { + [name: string]: number; + combat_1: number; + dungeon_hub: number; + foraging_1: number; + hub: number; + mining_2: number; + dungeon: number; + combat_2: number; + farming_2: number; + mining_1: number; + farming_1: number; + combat_3: number; + dynamic: number; + }; + }; + ARCADE: { + players: number; + modes: { + [name: string]: number; + PARTY: number; + HOLE_IN_THE_WALL: number; + DEFENDER: number; + MINI_WALLS: number; + SIMON_SAYS: number; + ZOMBIES_BAD_BLOOD: number; + HIDE_AND_SEEK_PARTY_POOPER: number; + DAYONE: number; + DRAW_THEIR_THING: number; + ZOMBIES_ALIEN_ARCADIUM: number; + ONEINTHEQUIVER: number; + SOCCER: number; + PVP_CTW: number; + THROW_OUT: number; + ENDER: number; + STARWARS: number; + HALLOWEEN_SIMULATOR: number; + DRAGONWARS2: number; + ZOMBIES_DEAD_END: number; + HIDE_AND_SEEK_PROP_HUNT: number; + FARM_HUNT: number; + }; + }; + PIT: { + players: number; + modes: { + PIT: number; + }; + }; + TNTGAMES: { + players: number; + modes: { + [name: string]: number; + PVPRUN: number; + TNTAG: number; + TNTRUN: number; + BOWSPLEEF: number; + CAPTURE: number; + }; + }; + SKYWARS: { + players: number; + modes: { + [name: string]: number; + solo_insane_lucky: number; + solo_insane_slime: number; + teams_insane_lucky: number; + solo_normal: number; + teams_insane: number; + solo_insane_hunters_vs_beasts: number; + ranked_normal: number; + solo_insane_tnt_madness: number; + mega_doubles: number; + solo_insane: number; + teams_insane_tnt_madness: number; + teams_normal: number; + mega_normal: number; + }; + }; + LIMBO: { + players: number; + }; + IDLE: { + players: number; + }; + QUEUE: { + players: number; + }; + }; + } + export type $400 = Components.Responses.MissingFields; + export type $403 = Components.Responses.Unauthorized; + export type $429 = Components.Responses.RateLimitError; + } + } + } + namespace Guild { + namespace Get { + namespace Parameters { + /** + * example: + * 553490650cf26f12ae5bac8f + */ + export type Id = string; + /** + * example: + * Mini Squid + */ + export type Name = string; + /** + * example: + * 20934ef9488c465180a78f861586b4cf + */ + export type Player = string; + } + export interface QueryParameters { + id?: /** + * example: + * 553490650cf26f12ae5bac8f + */ + Parameters.Id; + player?: /** + * example: + * 20934ef9488c465180a78f861586b4cf + */ + Parameters.Player; + name?: /** + * example: + * Mini Squid + */ + Parameters.Name; + } + namespace Responses { + export type $200 = Components.Schemas.GuildResponse; + export type $400 = Components.Schemas.ApiError; + export type $403 = Components.Responses.Unauthorized; + export type $422 = Components.Schemas.ApiError; + export type $429 = Components.Responses.RateLimitError; + } + } + } + namespace Key { + namespace Get { + namespace Responses { + /** + * example: + * { + * "record": { + * "key": "00000000-0000-0000-0000-000000000000", + * "owner": "20934ef9-488c-4651-80a7-8f861586b4cf", + * "limit": 120, + * "queriesInPastMin": 12, + * "totalQueries": 1234 + * } + * } + */ + export interface $200 { + /** + * Whether or not the request succeeded. + */ + success: boolean; + record: { + key: string; + owner: string; + limit: number; + queriesInPastMin: number; + totalQueries: number; + }; + } + export type $400 = Components.Responses.MissingFields; + export type $403 = Components.Responses.Unauthorized; + export type $429 = Components.Responses.RateLimitError; + } + } + } + namespace Leaderboards { + namespace Get { + namespace Responses { + export interface $200 { + /** + * Whether or not the request succeeded. + */ + success: boolean; + leaderboards: { + [name: string]: Components.Schemas.LeaderboardDataEntry[]; + ARENA: Components.Schemas.LeaderboardDataEntry[]; + MCGO: Components.Schemas.LeaderboardDataEntry[]; + BATTLEGROUND: Components.Schemas.LeaderboardDataEntry[]; + SURVIVAL_GAMES: Components.Schemas.LeaderboardDataEntry[]; + UHC: Components.Schemas.LeaderboardDataEntry[]; + WALLS: Components.Schemas.LeaderboardDataEntry[]; + PROTOTYPE: Components.Schemas.LeaderboardDataEntry[]; + PAINTBALL: Components.Schemas.LeaderboardDataEntry[]; + SKYWARS: Components.Schemas.LeaderboardDataEntry[]; + MURDER_MYSTERY: Components.Schemas.LeaderboardDataEntry[]; + SUPER_SMASH: Components.Schemas.LeaderboardDataEntry[]; + DUELS: Components.Schemas.LeaderboardDataEntry[]; + SPEED_UHC: Components.Schemas.LeaderboardDataEntry[]; + TNTGAMES: Components.Schemas.LeaderboardDataEntry[]; + BEDWARS: Components.Schemas.LeaderboardDataEntry[]; + GINGERBREAD: Components.Schemas.LeaderboardDataEntry[]; + BUILD_BATTLE: Components.Schemas.LeaderboardDataEntry[]; + ARCADE: Components.Schemas.LeaderboardDataEntry[]; + SKYCLASH: Components.Schemas.LeaderboardDataEntry[]; + QUAKECRAFT: Components.Schemas.LeaderboardDataEntry[]; + TRUE_COMBAT: Components.Schemas.LeaderboardDataEntry[]; + WALLS3: Components.Schemas.LeaderboardDataEntry[]; + VAMPIREZ: Components.Schemas.LeaderboardDataEntry[]; + }; + } + export type $400 = Components.Responses.MissingFields; + export type $403 = Components.Responses.Unauthorized; + export type $429 = Components.Responses.RateLimitError; + } + } + } + namespace Player { + namespace Get { + namespace Responses { + export interface $200 { + /** + * Whether or not the request succeeded. + */ + success: boolean; + player: Components.Schemas.NullablePlayer; + } + export type $400 = Components.Responses.MissingFields; + export type $403 = Components.Responses.Unauthorized; + export type $429 = Components.Responses.RateLimitError; + } + } + } + namespace PlayerCount { + namespace Get { + namespace Responses { + export interface $200 { + /** + * Whether or not the request succeeded. + */ + success: boolean; + /** + * Total players on the network + * example: + * 75612 + */ + playerCount: number; + } + export type $400 = Components.Responses.MissingFields; + export type $403 = Components.Responses.Unauthorized; + export type $429 = Components.Responses.RateLimitError; + } + } + } + namespace RecentGames { + namespace Get { + namespace Responses { + export interface $200 { + /** + * Whether or not the request succeeded. + */ + success: boolean; + /** + * Watchdog's bans in the last minute. + */ + games: { + /** + * example: + * 1590850836485 + */ + date: number; + /** + * example: + * BEDWARS + */ + gameType: string; + /** + * example: + * FOUR_FOUR + */ + mode: string; + /** + * example: + * Dreamgrove + */ + map: string; + /** + * example: + * 1590850919917 + */ + ended?: number; + }[]; + } + export type $400 = Components.Responses.MissingFields; + export type $403 = Components.Responses.Unauthorized; + export type $422 = Components.Responses.MalformedUUID; + export type $429 = Components.Responses.RateLimitError; + } + } + } + namespace ResourcesAchievements { + namespace Get { + namespace Responses { + /** + * example: + * { + * "success": true, + * "lastUpdated": 1604706817946, + * "achievements": { + * "arcade": { + * "one_time": { + * "CREEPER_ATTACK_SURVIVAL": { + * "points": 10, + * "name": "Creeper Attack: Creeeep", + * "description": "Survive Creeper Attack without dying", + * "gamePercentUnlocked": 7.016806390981579, + * "globalPercentUnlocked": 3.194439338105325 + * } + * }, + * "tiered": { + * "ZOMBIES_NICE_SHOT": { + * "name": "Zombies: Nice Shot", + * "description": "Get %s zombie kills", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 100 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 500 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 1000 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 2500 + * } + * ] + * } + * }, + * "total_points": 1600, + * "total_legacy_points": 5 + * }, + * "arena": { + * "one_time": { + * "MY_NEW_HAT": { + * "points": 5, + * "name": "My New Hat", + * "description": "Win wearing an Epic hat", + * "gamePercentUnlocked": 0.40878630320523257, + * "globalPercentUnlocked": 0.03239382978262079 + * } + * }, + * "tiered": { + * "POWERUP": { + * "name": "Powerup!", + * "description": "Activate %s powerups", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 10 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 100 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 250 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 500 + * } + * ] + * } + * }, + * "total_points": 710, + * "total_legacy_points": 0 + * }, + * "bedwars": { + * "one_time": { + * "IRON_PUNCH": { + * "points": 5, + * "name": "Iron Punch", + * "description": "Get a kill with an Iron Golem", + * "gamePercentUnlocked": 18.516916616446323, + * "globalPercentUnlocked": 11.081223315450147 + * } + * }, + * "tiered": { + * "COLLECTORS_EDITION": { + * "name": "Collectors Edition", + * "description": "Collect %s wool from enemy teams", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 25 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 50 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 100 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 250 + * } + * ] + * } + * }, + * "total_points": 795, + * "total_legacy_points": 0 + * }, + * "blitz": { + * "one_time": { + * "DONKEYTAMER_MASTER": { + * "points": 10, + * "name": "Donkeytamer Master", + * "description": "Max out the Donkeytamer Kit", + * "gamePercentUnlocked": 0.01, + * "globalPercentUnlocked": 0.01 + * } + * }, + * "tiered": { + * "KIT_COLLECTOR": { + * "name": "Kit Collector", + * "description": "Unlock %s Advanced or Ultimate kits", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 1 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 5 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 10 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 15 + * } + * ] + * } + * }, + * "total_points": 1650, + * "total_legacy_points": 0 + * }, + * "buildbattle": { + * "one_time": { + * "GUESSING_STREAK": { + * "points": 5, + * "name": "Guessing Streak", + * "description": "Guess every theme correctly in Guess the Build", + * "gamePercentUnlocked": 5.4412406051235, + * "globalPercentUnlocked": 1.8679243815594853 + * } + * }, + * "tiered": { + * "BUILD_BATTLE_VOTER": { + * "name": "Judge", + * "description": "Vote on %s builds in Build Battle", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 40 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 200 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 500 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 1000 + * } + * ] + * } + * }, + * "total_points": 560, + * "total_legacy_points": 0 + * }, + * "christmas2017": { + * "one_time": { + * "GREED_INCARNATE": { + * "points": 15, + * "name": "Greed Incarnate", + * "description": "Steal 42 presents in a single game of Grinch Simulator", + * "globalPercentUnlocked": 0.21662858123274253 + * } + * }, + * "tiered": { + * "SECRET_SANTA": { + * "name": "Secret Santa", + * "description": "Fill %s stockings in Santa Simulator", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 5 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 25 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 60 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 150 + * } + * ] + * } + * }, + * "total_points": 660, + * "total_legacy_points": 200 + * }, + * "copsandcrims": { + * "one_time": { + * "OH_BABY_A_TRIPLE": { + * "points": 15, + * "name": "A Player's Nightmare", + * "description": "Get a double kill using a grenade", + * "gamePercentUnlocked": 0.307022864814434, + * "globalPercentUnlocked": 0.06307310800708539 + * } + * }, + * "tiered": { + * "CAC_BANKER": { + * "name": "Bounty Collector", + * "description": "Earn %s Coins", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 10000 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 50000 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 100000 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 250000 + * } + * ] + * } + * }, + * "total_points": 965, + * "total_legacy_points": 0 + * }, + * "duels": { + * "one_time": { + * "GONE_FISHING": { + * "points": 5, + * "name": "Gone Fishing", + * "description": "Catch a fish", + * "gamePercentUnlocked": 0.8309436623932128, + * "globalPercentUnlocked": 0.27000946479595545 + * } + * }, + * "tiered": { + * "DUELS_DIVISION": { + * "name": "Climbing the Ranks", + * "description": "Achieve %s Title in any mode", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 1 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 2 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 3 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 4 + * } + * ] + * } + * }, + * "total_points": 1200, + * "total_legacy_points": 110 + * }, + * "easter": { + * "one_time": { + * "ALL_EGGS_2019": { + * "points": 30, + * "name": "Egghunter (2019)", + * "description": "Find all easter eggs in the Main Lobby", + * "legacy": true + * } + * }, + * "tiered": { + * "THROW_EGGS": { + * "name": "Egg Thrower", + * "description": "Throw %s eggs", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 8 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 32 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 128 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 512 + * } + * ] + * } + * }, + * "total_points": 430, + * "total_legacy_points": 40 + * }, + * "general": { + * "one_time": { + * "YOUTUBER": { + * "points": 10, + * "name": "EEEEKK!", + * "description": "Be in the same lobby as a YouTuber", + * "globalPercentUnlocked": 62.84929127155385 + * } + * }, + * "tiered": { + * "CHALLENGER": { + * "name": "Challenger", + * "description": "Complete a total of %s challenges", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 10 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 50 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 100 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 250 + * } + * ] + * } + * }, + * "total_points": 410, + * "total_legacy_points": 0 + * }, + * "gingerbread": { + * "one_time": { + * "IS_THIS_SURVIVAL_GAMES": { + * "points": 5, + * "name": "Is this Survival Games?", + * "description": "Hit 5 players with the \"Notched Sword\" in 1 race", + * "gamePercentUnlocked": 1.1200450672852627, + * "globalPercentUnlocked": 0.12229878588538734 + * } + * }, + * "tiered": { + * "WINNER": { + * "name": "Medalist", + * "description": "Get %s trophies", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 5 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 25 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 100 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 250 + * } + * ] + * } + * }, + * "total_points": 600, + * "total_legacy_points": 0 + * }, + * "halloween2017": { + * "one_time": { + * "FIRE_FROM_HELL": { + * "points": 5, + * "name": "Fire from Hell", + * "description": "Win a game of Smash Heroes using Skullfire", + * "globalPercentUnlocked": 0.05622079370421381 + * } + * }, + * "tiered": { + * "PUMPKINATOR": { + * "name": "Pumpkinator Collector", + * "description": "Collect %s pumpkins in Bedwars", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 5 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 25 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 100 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 250 + * } + * ] + * } + * }, + * "total_points": 710, + * "total_legacy_points": 130 + * }, + * "housing": { + * "one_time": { + * "RECIEVE_COOKIE": { + * "points": 5, + * "name": "Filling the Cookie Jar", + * "description": "Receive a cookie.", + * "gamePercentUnlocked": 23.130059864883275, + * "globalPercentUnlocked": 4.2513101294999025 + * } + * }, + * "tiered": [], + * "total_points": 55, + * "total_legacy_points": 0 + * }, + * "murdermystery": { + * "one_time": { + * "BLESSING_AND_CURSE": { + * "points": 5, + * "name": "Mixed Messages", + * "description": "Receive a blessing and a curse from Kali in the same game on Ancient Tomb", + * "gamePercentUnlocked": 13.157039514340763, + * "globalPercentUnlocked": 4.265014758105646 + * } + * }, + * "tiered": { + * "WINS_AS_SURVIVOR": { + * "name": "Peace Is Mine", + * "description": "Win %s games as innocent or detective without dying", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 1 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 10 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 25 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 40 + * } + * ] + * } + * }, + * "total_points": 805, + * "total_legacy_points": 0 + * }, + * "paintball": { + * "one_time": { + * "ACTIVATE_KILLSTREAKS": { + * "points": 10, + * "name": "Unstoppable", + * "description": "Activate ten killstreaks", + * "gamePercentUnlocked": 1.0260724023328596, + * "globalPercentUnlocked": 0.2519742678216734 + * } + * }, + * "tiered": { + * "WINS": { + * "name": "Paintball Superstar", + * "description": "Win %s games", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 10 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 50 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 100 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 1000 + * } + * ] + * } + * }, + * "total_points": 685, + * "total_legacy_points": 0 + * }, + * "pit": { + * "one_time": { + * "PUNCH_SWORD": { + * "points": 5, + * "name": "The Punch", + * "description": "Hit a player with The Punch", + * "gamePercentUnlocked": 0.3629933575223368, + * "globalPercentUnlocked": 0.013510194923890408 + * } + * }, + * "tiered": { + * "MYSTICISM": { + * "name": "Mysticism", + * "description": "Enchant %s items", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 10 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 50 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 100 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 250 + * } + * ] + * } + * }, + * "total_points": 1080, + * "total_legacy_points": 0 + * }, + * "quake": { + * "one_time": { + * "SHOW_ME_THE_MONEY": { + * "points": 15, + * "name": "Show me the money!", + * "description": "Unlock the Polished Bling Case or the 1.0s trigger", + * "gamePercentUnlocked": 0.5984048114967335, + * "globalPercentUnlocked": 0.10115854193121432 + * } + * }, + * "tiered": { + * "COINS": { + * "name": "Quake Banker", + * "description": "Earn %s coins", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 5000 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 25000 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 100000 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 200000 + * } + * ] + * } + * }, + * "total_points": 940, + * "total_legacy_points": 0 + * }, + * "skyblock": { + * "one_time": { + * "EXPLOSIVE_ENDING": { + * "points": 5, + * "name": "Explosive Ending", + * "description": "Survive the Blast from the Unstable Dragon", + * "gamePercentUnlocked": 3.273060341189789, + * "globalPercentUnlocked": 1.0396722484452376 + * } + * }, + * "tiered": { + * "ANGLER": { + * "name": "Angler", + * "description": "Achieve fishing level %s", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 5 + * }, + * { + * "tier": 2, + * "points": 5, + * "amount": 10 + * }, + * { + * "tier": 3, + * "points": 10, + * "amount": 15 + * }, + * { + * "tier": 4, + * "points": 10, + * "amount": 20 + * } + * ] + * } + * }, + * "total_points": 1700, + * "total_legacy_points": 0 + * }, + * "skyclash": { + * "one_time": { + * "WHATS_NEXT": { + * "points": 10, + * "name": "What's next?", + * "description": "Max out a Card", + * "legacy": true + * } + * }, + * "tiered": { + * "CARDS_UNLOCKED": { + * "name": "Collector!", + * "description": "Unlock %s different Cards", + * "legacy": true, + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 15 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 25 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 35 + * } + * ] + * } + * }, + * "total_points": 0, + * "total_legacy_points": 715 + * }, + * "skywars": { + * "one_time": { + * "PEACEMAKER": { + * "points": 10, + * "name": "Peacemaker", + * "description": "Win a game without killing anyone", + * "gamePercentUnlocked": 35.91945665528181, + * "globalPercentUnlocked": 23.00161061791731 + * } + * }, + * "tiered": { + * "KILLS_TEAM": { + * "name": "Team Killer", + * "description": "Kill %s players in Team mode", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 50 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 250 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 1000 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 5000 + * } + * ] + * } + * }, + * "total_points": 1555, + * "total_legacy_points": 0 + * }, + * "speeduhc": { + * "one_time": null, + * "tiered": { + * "SALTY": { + * "name": "Salty", + * "description": "Collect %s Salt", + * "legacy": true, + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 200 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 1000 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 5000 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 10000 + * } + * ] + * } + * }, + * "total_points": 485, + * "total_legacy_points": 90 + * }, + * "summer": { + * "one_time": { + * "HOME_RUN": { + * "points": 5, + * "name": "Home Run", + * "description": "Knock a player into the void while using the Baseball Player Kit in SkyWars", + * "globalPercentUnlocked": 0.438836819941684 + * } + * }, + * "tiered": { + * "GONE_FISHING": { + * "name": "Gone Fishing", + * "description": "Fish %s treasure items while fishing in the Main Lobby", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 10 + * }, + * { + * "tier": 2, + * "points": 15, + * "amount": 50 + * }, + * { + * "tier": 3, + * "points": 25, + * "amount": 100 + * } + * ] + * } + * }, + * "total_points": 365, + * "total_legacy_points": 20 + * }, + * "supersmash": { + * "one_time": { + * "GENCLUCK_CHALLENGE": { + * "points": 5, + * "name": "General Cluck Challenge", + * "description": "Kill 2 enemy heroes with your Chicken Army", + * "gamePercentUnlocked": 5.009991257649556, + * "globalPercentUnlocked": 0.5199804765015701 + * } + * }, + * "tiered": { + * "SMASH_CHAMPION": { + * "name": "Smash Champion", + * "description": "Reach Smash Level %s", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 20 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 100 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 250 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 500 + * } + * ] + * } + * }, + * "total_points": 430, + * "total_legacy_points": 0 + * }, + * "tntgames": { + * "one_time": { + * "TNT_TAG_DIFFERENTTAGS": { + * "points": 10, + * "name": "One for you and for you and for you ...", + * "description": "Tag 5 different people in a game of TNT Tag", + * "gamePercentUnlocked": 22.24612356942583, + * "globalPercentUnlocked": 10.263423465717924 + * } + * }, + * "tiered": { + * "PVP_RUN_WINS": { + * "name": "Running Killer", + * "description": "Win %s games of PVP Run", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 10 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 20 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 50 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 100 + * } + * ] + * } + * }, + * "total_points": 1680, + * "total_legacy_points": 0 + * }, + * "truecombat": { + * "one_time": { + * "GOLD_FORAGER": { + * "points": 15, + * "name": "Gold Forager", + * "description": "Max out a Gold Dust perk", + * "legacy": true + * } + * }, + * "tiered": { + * "SOLO_KILLER": { + * "name": "Crazy Killer", + * "description": "Kill %s players in Solo Normal or Lucky modes", + * "legacy": true, + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 50 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 200 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 500 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 1000 + * } + * ] + * } + * }, + * "total_points": 0, + * "total_legacy_points": 785 + * }, + * "uhc": { + * "one_time": { + * "CRAFTING_REVOLUTION": { + * "points": 5, + * "name": "Crafting revolution", + * "description": "Use a custom recipe in game", + * "gamePercentUnlocked": 37.00093709225066, + * "globalPercentUnlocked": 3.9130367665843684 + * } + * }, + * "tiered": { + * "HUNTER": { + * "name": "Hunter", + * "description": "Kill %s players", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 10 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 100 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 500 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 1000 + * } + * ] + * } + * }, + * "total_points": 855, + * "total_legacy_points": 0 + * }, + * "vampirez": { + * "one_time": { + * "PURCHASE_BLOOD": { + * "points": 5, + * "name": "Cash4Blood", + * "description": "Purchase Blood from the shop", + * "gamePercentUnlocked": 24.465217949718827, + * "globalPercentUnlocked": 5.723903700414698 + * } + * }, + * "tiered": { + * "ZOMBIE_KILLER": { + * "name": "Zombie Hunter", + * "description": "Kill %s Zombies", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 250 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 500 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 2500 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 7500 + * } + * ] + * } + * }, + * "total_points": 610, + * "total_legacy_points": 0 + * }, + * "walls": { + * "one_time": { + * "FIRST_KIT": { + * "points": 5, + * "name": "Getting Ready", + * "description": "Unlock your first starter kit", + * "gamePercentUnlocked": 13.703430301410933, + * "globalPercentUnlocked": 1.4262594353363067 + * } + * }, + * "tiered": { + * "DIAMOND_MINER": { + * "name": "Rare Ore Miner", + * "description": "Mine %s Diamonds", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 5 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 20 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 50 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 100 + * } + * ] + * } + * }, + * "total_points": 520, + * "total_legacy_points": 0 + * }, + * "walls3": { + * "one_time": { + * "WHATS_THE_BIG_IDEA": { + * "points": 10, + * "name": "What's the big idea!?", + * "description": "Final kill an enemy after splashing them with a regen potion as Phoenix, before the potion expires", + * "gamePercentUnlocked": 0.036183601274772714, + * "globalPercentUnlocked": 0.01 + * } + * }, + * "tiered": { + * "COINS": { + * "name": "Mega Walls Banker", + * "description": "Earn %s coins in Mega Walls", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 5000 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 10000 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 35000 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 55000 + * } + * ] + * } + * }, + * "total_points": 2150, + * "total_legacy_points": 0 + * }, + * "warlords": { + * "one_time": { + * "MEDIUM_RARE": { + * "points": 5, + * "name": "Medium Rare", + * "description": "Receive a Rare weapon from The Weaponsmith.", + * "gamePercentUnlocked": 50.02137436405603, + * "globalPercentUnlocked": 3.902172048119626 + * } + * }, + * "tiered": { + * "ASSIST": { + * "name": "Quit Stealing My Kills!", + * "description": "Earn %s assists in any game mode", + * "tiers": [ + * { + * "tier": 1, + * "points": 5, + * "amount": 20 + * }, + * { + * "tier": 2, + * "points": 10, + * "amount": 100 + * }, + * { + * "tier": 3, + * "points": 15, + * "amount": 500 + * }, + * { + * "tier": 4, + * "points": 20, + * "amount": 2500 + * } + * ] + * } + * }, + * "total_points": 1380, + * "total_legacy_points": 0 + * } + * } + * } + */ + export type $200 = Components.Schemas.AchievementsResourceResponse; + } + } + } + namespace ResourcesChallenges { + namespace Get { + namespace Responses { + export type $200 = Components.Schemas.ChallengesResourceResponse; + } + } + } + namespace ResourcesGuildsAchievements { + namespace Get { + namespace Responses { + export type $200 = Components.Schemas.GuildsAchievementsResourceResponse; + } + } + } + namespace ResourcesGuildsPermissions { + namespace Get { + namespace Responses { + export type $200 = Components.Schemas.GuildsPermissionsResourceResponse; + } + } + } + namespace ResourcesQuests { + namespace Get { + namespace Responses { + export type $200 = Components.Schemas.QuestsResourceResponse; + } + } + } + namespace ResourcesSkyblockCollections { + namespace Get { + namespace Responses { + export type $200 = Components.Schemas.SkyBlockCollectionsResourcesResponse; + } + } + } + namespace ResourcesSkyblockSkills { + namespace Get { + namespace Responses { + export type $200 = Components.Schemas.SkyBlockSkillsResourcesResponse; + } + } + } + namespace SkyblockAuction { + namespace Get { + namespace Parameters { + /** + * example: + * 347ef6c1daac45ed9d1fa02818cf0fb6 + */ + export type Player = string; + /** + * example: + * 347ef6c1daac45ed9d1fa02818cf0fb6 + */ + export type Profile = string; + /** + * example: + * 409a1e0f261a49849493278d6cd9305a + */ + export type Uuid = string; + } + export interface QueryParameters { + player?: /** + * example: + * 347ef6c1daac45ed9d1fa02818cf0fb6 + */ + Parameters.Player; + profile?: /** + * example: + * 347ef6c1daac45ed9d1fa02818cf0fb6 + */ + Parameters.Profile; + uuid?: /** + * example: + * 409a1e0f261a49849493278d6cd9305a + */ + Parameters.Uuid; + } + namespace Responses { + export type $200 = Components.Schemas.SkyBlockAuctionResponse; + export type $400 = Components.Schemas.ApiError; + export type $403 = Components.Responses.Unauthorized; + export type $429 = Components.Responses.RateLimitError; + } + } + } + namespace SkyblockAuctions { + namespace Get { + namespace Parameters { + /** + * example: + * 1 + */ + export type Page = number; + } + export interface QueryParameters { + page?: /** + * example: + * 1 + */ + Parameters.Page; + } + namespace Responses { + export type $200 = Components.Schemas.SkyBlockAuctionsResponse; + } + } + } + namespace SkyblockAuctionsEnded { + namespace Get { + namespace Responses { + export type $200 = Components.Schemas.SkyBlockAuctionsEndedResponse; + } + } + } + namespace SkyblockBazaar { + namespace Get { + namespace Responses { + export type $200 = Components.Schemas.SkyBlockBazaarResponse; + } + } + } + namespace SkyblockNews { + namespace Get { + namespace Responses { + export type $200 = Components.Schemas.NewsResponse; + export type $400 = Components.Responses.MissingFields; + export type $403 = Components.Responses.Unauthorized; + export type $429 = Components.Responses.RateLimitError; + } + } + } + namespace SkyblockProfile { + namespace Get { + namespace Parameters { + /** + * example: + * 20934ef9488c465180a78f861586b4cf + */ + export type Profile = string; + } + export interface QueryParameters { + profile: /** + * example: + * 20934ef9488c465180a78f861586b4cf + */ + Parameters.Profile; + } + namespace Responses { + export interface $200 { + /** + * Whether or not the request succeeded. + */ + success: boolean; + profile: Components.Schemas.SkyBlockProfile; + } + export type $400 = Components.Responses.MissingFields; + export type $403 = Components.Responses.Unauthorized; + export type $429 = Components.Responses.RateLimitError; + } + } + } + namespace SkyblockProfiles { + namespace Get { + namespace Responses { + export interface $200 { + /** + * Whether or not the request succeeded. + */ + success: boolean; + profiles: Components.Schemas.SkyBlockProfileCuteName[] | null; + } + export type $400 = Components.Responses.MissingFields; + export type $403 = Components.Responses.Unauthorized; + export type $429 = Components.Responses.RateLimitError; + } + } + } + namespace Status { + namespace Get { + namespace Responses { + export interface $200 { + /** + * Whether or not the request succeeded. + */ + success: boolean; + session: Components.Schemas.Session; + } + export type $400 = Components.Responses.MissingFields; + export type $403 = Components.Responses.Unauthorized; + export type $422 = Components.Responses.MalformedUUID; + export type $429 = Components.Responses.RateLimitError; + } + } + } + namespace Watchdogstats { + namespace Get { + namespace Responses { + export interface $200 { + /** + * Whether or not the request succeeded. + */ + success: boolean; + /** + * Watchdog's bans in the last minute. + * example: + * 5 + */ + watchdog_lastMinute: number; + /** + * Staff bans in the last day. + * example: + * 1356 + */ + staff_rollingDaily: number; + /** + * Total Watchdog bans, ever. + * example: + * 4924740 + */ + watchdog_total: number; + /** + * Watchdog bans in the last day. + * example: + * 7679 + */ + watchdog_rollingDaily: number; + /** + * Total staff bans, ever. + * example: + * 1608360 + */ + staff_total: number; + } + export type $400 = Components.Responses.MissingFields; + export type $403 = Components.Responses.Unauthorized; + export type $429 = Components.Responses.RateLimitError; + } + } + } +} diff --git a/deno_dist/util/BaseClient.ts b/deno_dist/util/BaseClient.ts new file mode 100644 index 00000000..f27c4ed4 --- /dev/null +++ b/deno_dist/util/BaseClient.ts @@ -0,0 +1,8 @@ +import { Components } from "../types/api.ts"; + +export abstract class BaseClient { + public abstract call( + path: string, + parameters?: Record + ): Promise; +} diff --git a/deno_dist/util/Method.ts b/deno_dist/util/Method.ts new file mode 100644 index 00000000..9b2063e4 --- /dev/null +++ b/deno_dist/util/Method.ts @@ -0,0 +1,12 @@ +import { BaseClient } from "./BaseClient.ts"; + +/** @internal */ +export abstract class Method { + /** @internal */ + protected client: BaseClient; + + /** @internal */ + constructor(client: BaseClient) { + this.client = client; + } +} diff --git a/deno_dist/util/NBT.ts b/deno_dist/util/NBT.ts new file mode 100644 index 00000000..e5f4277b --- /dev/null +++ b/deno_dist/util/NBT.ts @@ -0,0 +1,22 @@ +/* istanbul ignore file */ +import { toUint8Array } from "https://denopkg.com/chiefbiiko/base64/mod.ts"; +import { + parse as nbtParse, + simplify, +} from "https://deno.land/x/nbt_parser@v1.2.1/index.ts"; +import type { NBTInventoryItem } from "../helpers/TransformItemData.ts"; + +export async function parse( + value: Uint8Array | number[] | string +): Promise { + let uint8array: Uint8Array; + if (value instanceof Uint8Array) { + uint8array = value; + } else if (Array.isArray(value)) { + uint8array = Uint8Array.from(value); + } else { + uint8array = toUint8Array(value); + } + + return simplify(nbtParse(uint8array).value.i as never); +} diff --git a/deno_dist/util/Queue.ts b/deno_dist/util/Queue.ts new file mode 100644 index 00000000..cc29db73 --- /dev/null +++ b/deno_dist/util/Queue.ts @@ -0,0 +1,44 @@ +/** @internal */ +export class Queue { + private promises: [Promise, () => void][] = []; + + /** + * Wait for the queue. + */ + public wait(): Promise { + const next = this.next(); + this.queuePromise(); + return next; + } + + /** + * Get the next in queue. + */ + public next(): Promise { + if (this.promises.length > 0) { + return this.promises[this.promises.length - 1][0]; + } + return Promise.resolve(); + } + + /** + * Free up the next in queue. + */ + public free(): void { + const queued = this.promises.shift(); + if (typeof queued !== "undefined") { + queued[1](); + } + } + + /** + * Create an empty promise and add it to the queue. + */ + private queuePromise(): void { + let resolve: () => void; + const promise = new Promise((res) => { + resolve = res; + }); + this.promises.push([promise, () => resolve()]); + } +} diff --git a/deno_dist/util/Request.ts b/deno_dist/util/Request.ts new file mode 100644 index 00000000..0ab5e0a8 --- /dev/null +++ b/deno_dist/util/Request.ts @@ -0,0 +1,88 @@ +/* istanbul ignore file */ +import { GenericHTTPError } from "../errors/GenericHTTPError.ts"; +import { InvalidKeyError } from "../errors/InvalidKeyError.ts"; +import { RateLimitError } from "../errors/RateLimitError.ts"; +import type { DefaultMeta, RequestOptions } from "../Client.ts"; +import { Components } from "../types/api.ts"; + +/** @internal */ +const CACHE_CONTROL_REGEX = /s-maxage=(\d+)/; + +/** @internal */ +export async function request< + T extends Components.Schemas.ApiSuccess & { + cause?: string; + } & { cloudflareCache?: DefaultMeta["cloudflareCache"] } +>(options: RequestOptions): Promise { + const response = await fetch(options.url, { + method: "GET", + headers: { + "User-Agent": options.userAgent, + Accept: "application/json", + }, + }); + + if (!options.noRateLimit) { + const headers: Record = {}; + for (const header of response.headers.entries()) { + headers[header[0]] = header[1]; + } + options.getRateLimitHeaders(headers); + } + + const responseBody = await response.text(); + + let responseObject: T | undefined; + try { + responseObject = JSON.parse(responseBody); + } catch (_) { + // noop + } + + if (response.status !== 200) { + switch (response.status) { + case 429: + throw new RateLimitError(`Hit key throttle.`); + case 403: + throw new InvalidKeyError("Invalid API Key"); + default: + if (typeof response.status === "number" && responseObject?.cause) { + throw new GenericHTTPError(response.status, responseObject.cause); + } + throw new Error( + `${response.status} ${response.statusText}. Response: ${responseBody}` + ); + } + } + + if (typeof responseObject === "undefined") { + throw new Error( + `Invalid JSON response received. Response: ${responseBody}` + ); + } + + if ( + response.headers.get("cf-cache-status") !== null && + response.headers.get("age") !== null && + response.headers.get("cache-control") !== null + ) { + const age = parseInt(response.headers.get("age") as string, 10); + const maxAge = CACHE_CONTROL_REGEX.exec( + response.headers.get("cache-control") as string + ); + responseObject.cloudflareCache = { + status: response.headers.get("cf-cache-status") as never, + ...(typeof age === "number" && !Number.isNaN(age) && { age }), + ...(response.headers.get("cf-cache-status") === "HIT" && + (typeof age !== "number" || Number.isNaN(age)) && { age: 0 }), + ...(maxAge && + typeof maxAge === "object" && + maxAge.length === 2 && + parseInt(maxAge[1], 10) > 0 && { + maxAge: parseInt(maxAge[1], 10), + }), + }; + } + + return responseObject; +} diff --git a/deno_dist/util/ResultArray.ts b/deno_dist/util/ResultArray.ts new file mode 100644 index 00000000..b6578353 --- /dev/null +++ b/deno_dist/util/ResultArray.ts @@ -0,0 +1,60 @@ +import { DefaultMeta } from "../types/DefaultMeta.ts"; +import { Components } from "../types/api.ts"; + +/** + * Generic intersection type for result arrays to include metadata as a non-enumerable property. + * @example + * ```typescript + * const result = await client.skyblock.news(); + * console.log(result); + * // (7) [{…}, {…}, {…}, {…}, {…}, {…}, {…}] + * console.log(result.meta) + * // {success: true} + * ``` + */ +export type ResultArray< + T extends Components.Schemas.ApiSuccess, + K extends keyof T +> = T[K] & { + meta: Omit & DefaultMeta; +}; + +/** @hidden */ +export function getResultArray< + T extends Components.Schemas.ApiSuccess, + K extends keyof T +>(response: T & DefaultMeta, key: K): ResultArray { + const clonedResponse: typeof response = JSON.parse(JSON.stringify(response)); + if (!(key in clonedResponse)) { + throw new TypeError(`Key "${key}" was not in the response.`); + } + const items = clonedResponse[key]; + const { ratelimit, cached, cloudflareCache } = clonedResponse; + if (!Array.isArray(items)) { + throw new TypeError(`Key "${key}" is not an array.`); + } + delete clonedResponse[key]; + const arr = ([...items] as never) as ResultArray; + const meta: Omit & DefaultMeta = { + ...clonedResponse, + }; + if (cached) { + meta.cached = true; + } + if (cloudflareCache) { + meta.cloudflareCache = cloudflareCache; + } + if (ratelimit) { + if ( + !cached && + (!meta.cloudflareCache || meta.cloudflareCache.status !== "HIT") + ) { + meta.ratelimit = ratelimit; + } + } + Object.defineProperty(arr, "meta", { + enumerable: false, + value: meta, + }); + return arr; +} diff --git a/deno_dist/util/ResultObject.ts b/deno_dist/util/ResultObject.ts new file mode 100644 index 00000000..f833c570 --- /dev/null +++ b/deno_dist/util/ResultObject.ts @@ -0,0 +1,96 @@ +import { DefaultMeta } from "../types/DefaultMeta.ts"; +import { Components } from "../types/api.ts"; + +/** + * Generic intersection type for result objects to include metadata as a non-enumerable property. + * @example + * ```typescript + * const result = await client.watchdogstats(); + * console.log(result); + * // {watchdog_lastMinute: 1, staff_rollingDaily: 2609, watchdog_total: 5591714, watchdog_rollingDaily: 4213, …} + * console.log(result.meta) + * // {success: true} + * ``` + */ +export type ResultObject< + T extends Components.Schemas.ApiSuccess, + K extends (keyof T)[] +> = (T[K[number]] extends string | number | boolean + ? Omit + : T[K[number]]) & { + meta: (T[K[number]] extends string | number | boolean + ? Pick + : Omit) & + DefaultMeta; +}; + +/** @hidden */ +export function getResultObject< + T extends Components.Schemas.ApiSuccess, + K extends (keyof T)[] +>(response: T & DefaultMeta, keys: K): ResultObject { + const clonedResponse: typeof response = JSON.parse(JSON.stringify(response)); + if (!keys.every((key) => key in clonedResponse)) { + throw new TypeError( + `One or more key in "${keys.join('"," ')}" was not in the response.` + ); + } + + const obj: ResultObject = {} as ResultObject; + const { ratelimit, cached, cloudflareCache } = clonedResponse; + const meta: DefaultMeta & Record = {}; + if (cached) { + meta.cached = true; + delete clonedResponse.cached; + } + if (cloudflareCache) { + meta.cloudflareCache = cloudflareCache; + delete clonedResponse.cloudflareCache; + } + if (ratelimit) { + if ( + !cached && + (!meta.cloudflareCache || meta.cloudflareCache.status !== "HIT") + ) { + meta.ratelimit = ratelimit; + } + delete clonedResponse.ratelimit; + } + + let assignedMeta = false; + keys.forEach((key) => { + const value = clonedResponse[key]; + + if ( + typeof value === "string" || + typeof value === "number" || + typeof value === "boolean" + ) { + delete clonedResponse[key]; + assignedMeta = true; + meta[key] = value; + } + }); + + if (assignedMeta) { + // we want the remainder merged into the object. + Object.assign(obj, clonedResponse); + Object.defineProperty(obj, "meta", { + enumerable: false, + value: meta, + }); + return obj; + } + + // we want all the keys merged with the root and the remainder assigned to meta. + keys.forEach((key) => { + Object.assign(obj, clonedResponse[key]); + delete clonedResponse[key]; + }); + Object.assign(meta, clonedResponse); + Object.defineProperty(obj, "meta", { + enumerable: false, + value: meta, + }); + return obj; +} diff --git a/package-lock.json b/package-lock.json index aa5fb506..8e7c1d73 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@zikeji/hypixel", - "version": "2.2.3", + "version": "3.0.0", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 1091ff3b..474986b2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@zikeji/hypixel", - "version": "2.2.3", + "version": "3.0.0", "description": "With thorough IntelliSense support & 100% test coverage, this is an unopinionated async/await API wrapper for Hypixel's Public API. It is developed in TypeScript complete with documentation, typed interfaces for all API responses (and an OpenAPI 3.0 schema!), built-in rate-limit handling, flexible cache support, helper functions, and support for undocumented endpoints.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -226,7 +226,12 @@ "@semantic-release/git", { "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}", - "assets": ["CHANGELOG.md", "package.json", "package-lock.json", "deno_dist/**/*"] + "assets": [ + "CHANGELOG.md", + "package.json", + "package-lock.json", + "deno_dist/**/*" + ] } ] ]