hypixel-api-reborn 11.2.1 → 11.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/package.json +8 -8
  2. package/src/API/housing/getActiveHouses.js +7 -0
  3. package/src/API/housing/getHouse.js +9 -0
  4. package/src/API/housing/getPlayerHouses.js +11 -0
  5. package/src/API/index.js +6 -1
  6. package/src/API/skyblock/getGarden.js +7 -0
  7. package/src/API/skyblock/getMember.js +4 -2
  8. package/src/API/skyblock/getProfiles.js +4 -2
  9. package/src/Client.js +46 -2
  10. package/src/Private/requests.js +1 -1
  11. package/src/index.js +5 -0
  12. package/src/structures/House.js +54 -0
  13. package/src/structures/MiniGames/Arcade.js +754 -270
  14. package/src/structures/MiniGames/ArenaBrawl.js +97 -31
  15. package/src/structures/MiniGames/BlitzSurvivalGames.js +378 -127
  16. package/src/structures/MiniGames/BuildBattle.js +19 -8
  17. package/src/structures/MiniGames/CopsAndCrims.js +252 -25
  18. package/src/structures/MiniGames/Duels.js +899 -656
  19. package/src/structures/MiniGames/MegaWalls.js +390 -51
  20. package/src/structures/MiniGames/MurderMystery.js +151 -30
  21. package/src/structures/MiniGames/Paintball.js +31 -11
  22. package/src/structures/MiniGames/Quakecraft.js +113 -50
  23. package/src/structures/MiniGames/SkyWars.js +340 -195
  24. package/src/structures/MiniGames/SmashHeroes.js +195 -69
  25. package/src/structures/MiniGames/SpeedUHC.js +76 -36
  26. package/src/structures/MiniGames/TNTGames.js +242 -73
  27. package/src/structures/MiniGames/TurboKartRacers.js +55 -115
  28. package/src/structures/MiniGames/UHC.js +135 -124
  29. package/src/structures/MiniGames/VampireZ.js +70 -37
  30. package/src/structures/MiniGames/Warlords.js +126 -1
  31. package/src/structures/MiniGames/WoolWars.js +54 -4
  32. package/src/structures/Player.js +30 -24
  33. package/src/structures/SkyBlock/SkyblockGarden.js +146 -0
  34. package/src/structures/SkyBlock/SkyblockMember.js +12 -5
  35. package/src/utils/Constants.js +507 -5
  36. package/src/utils/SkyblockUtils.js +33 -0
  37. package/typings/index.d.ts +911 -802
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hypixel-api-reborn",
3
- "version": "11.2.1",
3
+ "version": "11.3.0",
4
4
  "description": "Feature-rich Hypixel API wrapper for Node.js",
5
5
  "main": "./src/index.js",
6
6
  "types": "./typings/index.d.ts",
@@ -32,7 +32,7 @@
32
32
  "node-fetch": "^3.3.2",
33
33
  "prismarine-nbt": "^2.5.0",
34
34
  "rss-parser": "^3.13.0",
35
- "skyhelper-networth": "latest"
35
+ "skyhelper-networth": "^1.21.0"
36
36
  },
37
37
  "license": "MIT",
38
38
  "readme": "https://hypixel.stavzdev.me/",
@@ -42,15 +42,15 @@
42
42
  "publisher": "StavZ",
43
43
  "devDependencies": {
44
44
  "@discordjs/docgen": "github:discordjs/docgen",
45
- "@types/node": "^20.11.19",
45
+ "@types/node": "^20.14.11",
46
46
  "chai": "^4.3.4",
47
- "eslint": "^9.3.0",
48
- "eslint-plugin-jsdoc": "^48.2.7",
49
- "globals": "^15.3.0",
47
+ "eslint": "^9.7.0",
48
+ "eslint-plugin-jsdoc": "^48.8.3",
49
+ "globals": "^15.8.0",
50
50
  "mocha": "^10.4.0",
51
51
  "node-env-run": "^4.0.2",
52
52
  "path": "^0.12.7",
53
- "prettier": "^3.2.5",
54
- "typescript": "^5.3.3"
53
+ "prettier": "^3.3.3",
54
+ "typescript": "^5.5.3"
55
55
  }
56
56
  }
@@ -0,0 +1,7 @@
1
+ module.exports = async function () {
2
+ const House = require('../../structures/House');
3
+ // eslint-disable-next-line no-underscore-dangle
4
+ const res = await this._makeRequest('/housing/active');
5
+ if (res.raw) return res;
6
+ return res.length ? res.map((b) => new House(b)) : [];
7
+ };
@@ -0,0 +1,9 @@
1
+ const Errors = require('../../Errors');
2
+ module.exports = async function (query) {
3
+ if (!query) throw new Error(Errors.NO_UUID);
4
+ const House = require('../../structures/House');
5
+ // eslint-disable-next-line no-underscore-dangle
6
+ const res = await this._makeRequest(`/housing/house?house=${query}`);
7
+ if (res.raw) return res;
8
+ return new House(res);
9
+ };
@@ -0,0 +1,11 @@
1
+ const Errors = require('../../Errors');
2
+ const toUuid = require('../../utils/toUuid');
3
+ module.exports = async function (query) {
4
+ if (!query) throw new Error(Errors.NO_NICKNAME_UUID);
5
+ query = await toUuid(query, this.options.mojangCacheTime, this.options.useThirdPartyAPI);
6
+ const House = require('../../structures/House');
7
+ // eslint-disable-next-line no-underscore-dangle
8
+ const res = await this._makeRequest(`/housing/houses?player=${query}`);
9
+ if (res.raw) return res;
10
+ return res.length ? res.map((b) => new House(b)) : [];
11
+ };
package/src/API/index.js CHANGED
@@ -22,9 +22,14 @@ module.exports = {
22
22
  getSkyblockBingoByPlayer: require('./skyblock/getBingoByPlayer.js'),
23
23
  getSkyblockEndedAuctions: require('./skyblock/getEndedAuctions.js'),
24
24
  getSkyblockFireSales: require('./skyblock/getFireSales.js'),
25
+ getSkyblockGarden: require('./skyblock/getGarden.js'),
25
26
  getSkyblockGovernment: require('./skyblock/getGovernment.js'),
26
27
  getSkyblockMember: require('./skyblock/getMember.js'),
27
28
  getSkyblockMuseum: require('./skyblock/getMuseum.js'),
28
29
  getSkyblockNews: require('./skyblock/getNews.js'),
29
- getSkyblockProfiles: require('./skyblock/getProfiles.js')
30
+ getSkyblockProfiles: require('./skyblock/getProfiles.js'),
31
+
32
+ getActiveHouses: require('./housing/getActiveHouses.js'),
33
+ getPlayerHouses: require('./housing/getPlayerHouses.js'),
34
+ getHouse: require('./housing/getHouse.js')
30
35
  };
@@ -0,0 +1,7 @@
1
+ module.exports = async function (profileId) {
2
+ const SkyblockGarden = require('../../structures/SkyBlock/SkyblockGarden');
3
+ // eslint-disable-next-line no-underscore-dangle
4
+ const res = await this._makeRequest(`/skyblock/garden?profile=${profileId}`);
5
+ if (res.raw) return res;
6
+ return new SkyblockGarden(res);
7
+ };
@@ -1,9 +1,10 @@
1
1
  const Errors = require('../../Errors');
2
2
  const toUuid = require('../../utils/toUuid');
3
3
  const getPlayer = require('../getPlayer');
4
- module.exports = async function (query, options = { fetchPlayer: false, getMuseum: false }) {
4
+ module.exports = async function (query, options = { fetchPlayer: false, getMuseum: false, getGarden: false }) {
5
5
  const SkyblockMember = require('../../structures/SkyBlock/SkyblockMember');
6
- const getSkyblockMuseum = require('../skyblock/getMuseum');
6
+ const getSkyblockMuseum = require('./getMuseum');
7
+ const getSkyblockGarden = require('./getGarden');
7
8
  if (!query) throw new Error(Errors.NO_NICKNAME_UUID);
8
9
  query = await toUuid(query, this.options.mojangCacheTime, this.options.useThirdPartyAPI);
9
10
  // eslint-disable-next-line no-underscore-dangle
@@ -25,6 +26,7 @@ module.exports = async function (query, options = { fetchPlayer: false, getMuseu
25
26
  banking: profile.banking,
26
27
  communityUpgrades: profile.community_upgrades,
27
28
  museum: options.getMuseum ? await getSkyblockMuseum.call(this, query, profile.profile_id) : null,
29
+ garden: options.getGarden ? await getSkyblockGarden.call(this, profile.profile_id) : null,
28
30
  selected: profile.selected
29
31
  })
30
32
  );
@@ -1,9 +1,10 @@
1
1
  const Errors = require('../../Errors');
2
2
  const toUuid = require('../../utils/toUuid');
3
3
  const getPlayer = require('../getPlayer');
4
- module.exports = async function (query, options = { fetchPlayer: false, getMuseum: false }) {
4
+ module.exports = async function (query, options = { fetchPlayer: false, getMuseum: false, getGarden: false }) {
5
5
  const SkyblockProfile = require('../../structures/SkyBlock/SkyblockProfile');
6
- const getSkyblockMuseum = require('../skyblock/getMuseum');
6
+ const getSkyblockMuseum = require('./getMuseum');
7
+ const getSkyblockGarden = require('./getGarden');
7
8
  if (!query) throw new Error(Errors.NO_NICKNAME_UUID);
8
9
  query = await toUuid(query, this.options.mojangCacheTime, this.options.useThirdPartyAPI);
9
10
  // eslint-disable-next-line no-underscore-dangle
@@ -38,6 +39,7 @@ module.exports = async function (query, options = { fetchPlayer: false, getMuseu
38
39
  banking: res.profiles[i].banking,
39
40
  communityUpgrades: res.profiles[i].community_upgrades,
40
41
  museum: options.getMuseum ? await getSkyblockMuseum.call(this, query, res.profiles[i].profile_id) : null,
42
+ garden: options.getGarden ? await getSkyblockGarden.call(this, res.profiles[i].profile_id) : null,
41
43
  selected: res.profiles[i].selected,
42
44
  members: res.profiles[i].members
43
45
  });
package/src/Client.js CHANGED
@@ -15,6 +15,7 @@ const Booster = require('./structures/Boosters/Booster');
15
15
  const SkyblockProfile = require('./structures/SkyBlock/SkyblockProfile');
16
16
  const SkyblockMember = require('./structures/SkyBlock/SkyblockMember');
17
17
  const SkyblockMuseum = require('./structures/SkyBlock/SkyblockMuseum');
18
+ const SkyblockGarden = require('./structures/SkyBlock/SkyblockGarden');
18
19
  const APIStatus = require('./structures/APIStatus');
19
20
  const Leaderboard = require('./structures/Leaderboard');
20
21
  const ServerInfo = require('./structures/ServerInfo');
@@ -30,6 +31,7 @@ const GovernmentData = require('./structures/SkyBlock/Static/Government');
30
31
  const FireSale = require('./structures/SkyBlock/Static/FireSale');
31
32
  const SkyblockNews = require('./structures/SkyBlock/News/SkyblockNews');
32
33
  const GameCounts = require('./structures/GameCounts');
34
+ const House = require('./structures/House.js');
33
35
  /* eslint-enable */
34
36
 
35
37
  /**
@@ -252,6 +254,24 @@ class Client extends EventEmitter {
252
254
  * const member = await hypixel.getSkyblockMember('StavZDev').catch(console.log);
253
255
  * console.log(member.get('Cucumber').uuid); // '52d9a36f66ce4cdf9a56ad9724ae9fb4'
254
256
  */
257
+ /**
258
+ * Allows you to get a player's skyblock member data from all their profiles
259
+ * @method
260
+ * @name Client#getSkyblockGarden
261
+ * @param {string} profileId Profile id of the garden you want
262
+ * @param {MethodOptions} [options={}] Method options
263
+ * @return {Promise<SkyblockGarden>}
264
+ * @example
265
+ * hypixel.getSkyblockMember('StavZDev').then(member => {
266
+ * // 'Cucumber' - profile name
267
+ * console.log(member.get('Cucumber').uuid); // '52d9a36f66ce4cdf9a56ad9724ae9fb4'
268
+ * }).catch(e => {
269
+ * console.log(e);
270
+ * })
271
+ * @example
272
+ * const member = await hypixel.getSkyblockMember('StavZDev').catch(console.log);
273
+ * console.log(member.get('Cucumber').uuid); // '52d9a36f66ce4cdf9a56ad9724ae9fb4'
274
+ */
255
275
  /**
256
276
  * Allows you to get a player's skyblock profile museum
257
277
  * @method
@@ -403,6 +423,29 @@ class Client extends EventEmitter {
403
423
  * @param {MethodOptions} [options={}] Options
404
424
  * @return {Promise<FireSale[]>}
405
425
  */
426
+ /**
427
+ * Get a array of active houses
428
+ * @method
429
+ * @name Client#getActiveHouses
430
+ * @param {MethodOptions} [options={}] Options
431
+ * @return {Promise<House[]>}
432
+ */
433
+ /**
434
+ * Get a array of houses for a user
435
+ * @method
436
+ * @name Client#getPlayerHouses
437
+ * @param {string} query UUID / IGN of player
438
+ * @param {MethodOptions} [options={}] Options
439
+ * @return {Promise<House[]>}
440
+ */
441
+ /**
442
+ * Get a house
443
+ * @method
444
+ * @name Client#getHouse
445
+ * @param {string} query House UUID
446
+ * @param {MethodOptions} [options={}] Options
447
+ * @return {Promise<House>}
448
+ */
406
449
  /**
407
450
  * Allows you to get skyblock news
408
451
  * @method
@@ -477,11 +520,12 @@ const defaultCache = require('./Private/defaultCache.js');
477
520
  */
478
521
  /**
479
522
  * @typedef {object} SkyblockMethodOptions
480
- * @property {boolean} [fetchPlayer=false] Raw data
481
- * @property {boolean} [getMuseum=false] Raw data
523
+ * @property {boolean} [raw=false] Raw data
482
524
  * @property {boolean} [noCacheCheck=false] Disable/Enable cache checking
483
525
  * @property {boolean} [noCaching=false] Disable/Enable writing to cache
484
526
  * @property {?boolean} [fetchPlayer=false] Disable/Enable player profile request for each member
527
+ * @property {?boolean} [getMuseum=false] Disable/Enable player museum request for each member
528
+ * @property {?boolean} [getGarden=false] Disable/Enable player garden request for each member
485
529
  * @prop {object} [headers={}] Extra Headers ( like User-Agent ) to add to request. Overrides the headers globally provided.
486
530
  */
487
531
  /**
@@ -34,7 +34,7 @@ class Requests {
34
34
  if (422 === res.status) throw new Error(Errors.UNEXPECTED_ERROR);
35
35
  if (429 === res.status) throw new Error(Errors.RATE_LIMIT_EXCEEDED);
36
36
  if (200 !== res.status) throw new Error(Errors.ERROR_STATUSTEXT.replace(/{statustext}/, res.statusText));
37
- if (!parsedRes.success) {
37
+ if (!parsedRes.success && !endpoint.startsWith('/housing')) {
38
38
  throw new Error(Errors.SOMETHING_WENT_WRONG.replace(/{cause}/, res.cause));
39
39
  }
40
40
  // eslint-disable-next-line no-underscore-dangle
package/src/index.js CHANGED
@@ -29,6 +29,7 @@ module.exports = {
29
29
  /* SkyBlock */
30
30
  SkyblockProfile: require('./structures/SkyBlock/SkyblockProfile.js'),
31
31
  SkyblockMember: require('./structures/SkyBlock/SkyblockMember.js'),
32
+ SkyblockGarden: require('./structures/SkyBlock/SkyblockGarden.js'),
32
33
  SkyblockInventoryItem: require('./structures/SkyBlock/SkyblockInventoryItem.js'),
33
34
  SkyblockPet: require('./structures/SkyBlock/SkyblockPet'),
34
35
  GovernmentData: require('./structures/SkyBlock/Static/Government.js'),
@@ -54,6 +55,9 @@ module.exports = {
54
55
  /* Booster */
55
56
  Booster: require('./structures/Boosters/Booster.js'),
56
57
 
58
+ /* House */
59
+ House: require('./structures/House.js'),
60
+
57
61
  /* MiniGames */
58
62
  Arcade: require('./structures/MiniGames/Arcade.js'),
59
63
  ArenaBrawl: require('./structures/MiniGames/ArenaBrawl.js'),
@@ -65,6 +69,7 @@ module.exports = {
65
69
  MegaWalls: require('./structures/MiniGames/MegaWalls.js'),
66
70
  MurderMystery: require('./structures/MiniGames/MurderMystery.js'),
67
71
  Paintball: require('./structures/MiniGames/Paintball.js'),
72
+ Pit: require('./structures/MiniGames/Pit.js'),
68
73
  Quakecraft: require('./structures/MiniGames/Quakecraft.js'),
69
74
  SkyWars: require('./structures/MiniGames/SkyWars.js'),
70
75
  SmashHeroes: require('./structures/MiniGames/SmashHeroes.js'),
@@ -0,0 +1,54 @@
1
+ /**
2
+ * House class
3
+ */
4
+ class House {
5
+ /**
6
+ * @param {object} data data
7
+ */
8
+ constructor(data) {
9
+ /**
10
+ * Name of the house
11
+ * @type {string}
12
+ */
13
+ this.name = data.name || '';
14
+ /**
15
+ * UUID of the house
16
+ * @type {string}
17
+ */
18
+ this.uuid = data.uuid || '';
19
+ /**
20
+ * UUID of the house owner
21
+ * @type {string}
22
+ */
23
+ this.owner = data.owner || '';
24
+ /**
25
+ * Timestamp when the house was created
26
+ * @type {number}
27
+ */
28
+ this.createdAtTimestamp = data.createdAt || 0;
29
+ /**
30
+ * Date when the house was created
31
+ * @type {Date|null}
32
+ */
33
+ this.createdAt = new Date(this.createdAtTimestamp);
34
+ /**
35
+ * Number of players currently at the house
36
+ * @type {number}
37
+ */
38
+ this.players = data.players || 0;
39
+ /**
40
+ * Number of cookies the house has
41
+ * @type {number}
42
+ */
43
+ this.cookies = data.cookies?.current || 0;
44
+ }
45
+ /**
46
+ * House Nmae
47
+ * @return {string}
48
+ */
49
+ toString() {
50
+ return this.name;
51
+ }
52
+ }
53
+
54
+ module.exports = House;