hypixel-api-reborn 9.0.3 → 10.0.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.
- package/README.md +1 -1
- package/package.json +1 -1
- package/src/API/getAPIStatus.js +2 -1
- package/src/API/getBoosters.js +1 -0
- package/src/API/getFriends.js +1 -0
- package/src/API/getGameCounts.js +1 -0
- package/src/API/getGuild.js +1 -0
- package/src/API/getKeyInfo.js +1 -0
- package/src/API/getLeaderboards.js +1 -0
- package/src/API/getPlayer.js +2 -1
- package/src/API/getRankedSkyWars.js +1 -0
- package/src/API/getRecentGames.js +1 -0
- package/src/API/getStatus.js +1 -0
- package/src/API/getWatchdogStats.js +1 -0
- package/src/API/index.js +23 -9
- package/src/API/skyblock/getEndedSkyblockAuctions.js +1 -0
- package/src/API/skyblock/getSkyblockAuctionsByPlayer.js +1 -0
- package/src/API/skyblock/getSkyblockBazaar.js +1 -0
- package/src/API/skyblock/getSkyblockMember.js +1 -0
- package/src/API/skyblock/getSkyblockNews.js +1 -0
- package/src/API/skyblock/getSkyblockProfiles.js +1 -0
- package/src/Client.js +34 -14
- package/src/Errors.js +2 -1
- package/src/Private/defaultCache.js +78 -0
- package/src/Private/requests.js +24 -9
- package/src/Private/updater.js +4 -1
- package/src/Private/validate.js +3 -3
- package/src/structures/MiniGames/BedWars.js +22 -0
- package/src/structures/MiniGames/Duels.js +216 -46
- package/src/structures/MiniGames/TurboKartRacers.js +105 -0
- package/src/structures/Player.js +4 -8
- package/src/structures/ServerInfo.js +1 -1
- package/src/structures/SkyBlock/News/SkyblockNews.js +4 -4
- package/src/structures/SkyBlock/SkyblockInventoryItem.js +29 -1
- package/src/structures/SkyBlock/SkyblockMember.js +25 -13
- package/src/utils/Constants.js +14 -0
- package/src/utils/index.js +13 -9
- package/src/utils/rgbToHexColor.js +8 -0
- package/src/utils/romanize.js +13 -0
- package/typings/index.d.ts +375 -356
|
@@ -1,39 +1,41 @@
|
|
|
1
1
|
/* eslint-disable max-len */
|
|
2
2
|
const divide = require('../../utils/divide');
|
|
3
|
+
const romanize = require('../../utils/romanize');
|
|
4
|
+
// eslint-disable-next-line camelcase
|
|
5
|
+
const { duels_divisions } = require('../../utils/Constants');
|
|
6
|
+
|
|
3
7
|
/**
|
|
4
|
-
* @param {string}
|
|
5
|
-
* @
|
|
8
|
+
* @param {object<string,any>} data
|
|
9
|
+
* @param {string|null} mode
|
|
10
|
+
* @returns {string|undefined}
|
|
6
11
|
*/
|
|
7
|
-
function
|
|
8
|
-
|
|
12
|
+
function getDivision (data, mode) {
|
|
13
|
+
for (const div of duels_divisions.slice().reverse()) {
|
|
14
|
+
const prestige = data[`${mode ? mode : 'all_modes'}_${div.key}_title_prestige`];
|
|
15
|
+
if (prestige !== undefined) {
|
|
16
|
+
return `${div.name} ${romanize(prestige)}`;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
9
20
|
}
|
|
10
|
-
const numerals = {
|
|
11
|
-
1: 'I',
|
|
12
|
-
2: 'II',
|
|
13
|
-
3: 'III',
|
|
14
|
-
4: 'IV',
|
|
15
|
-
5: 'V',
|
|
16
|
-
6: 'VI',
|
|
17
|
-
7: 'VII',
|
|
18
|
-
8: 'VIII',
|
|
19
|
-
9: 'IX',
|
|
20
|
-
10: 'X'
|
|
21
|
-
};
|
|
22
21
|
/**
|
|
23
|
-
* @param {object} data
|
|
24
|
-
* @return {
|
|
22
|
+
* @param {object<string,any>} data
|
|
23
|
+
* @return {{kills:number,deaths:number}}
|
|
25
24
|
*/
|
|
26
|
-
function
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return null;
|
|
25
|
+
function getTotalKillsDeaths (data) {
|
|
26
|
+
let totalDeaths = 0;
|
|
27
|
+
let totalKills = 0;
|
|
28
|
+
for (const [k, v] of Object.entries(data)) {
|
|
29
|
+
if (k.includes('deaths') && k !== 'deaths') {
|
|
30
|
+
totalDeaths += v;
|
|
31
|
+
} else if (k.includes('kills') && k !== 'kills') {
|
|
32
|
+
totalKills += v;
|
|
33
|
+
}
|
|
36
34
|
}
|
|
35
|
+
return {
|
|
36
|
+
kills: totalKills,
|
|
37
|
+
deaths: totalDeaths
|
|
38
|
+
};
|
|
37
39
|
}
|
|
38
40
|
/**
|
|
39
41
|
* Duels class
|
|
@@ -49,20 +51,20 @@ class Duels {
|
|
|
49
51
|
*/
|
|
50
52
|
this.coins = data.coins || 0;
|
|
51
53
|
/**
|
|
52
|
-
*
|
|
54
|
+
* All modes division
|
|
53
55
|
* @type {string|null}
|
|
54
56
|
*/
|
|
55
|
-
this.
|
|
57
|
+
this.division = getDivision(data);
|
|
56
58
|
/**
|
|
57
59
|
* Kills
|
|
58
60
|
* @type {number}
|
|
59
61
|
*/
|
|
60
|
-
this.kills = (
|
|
62
|
+
this.kills = getTotalKillsDeaths(data).kills;
|
|
61
63
|
/**
|
|
62
64
|
* Deaths
|
|
63
65
|
* @type {number}
|
|
64
66
|
*/
|
|
65
|
-
this.deaths = (
|
|
67
|
+
this.deaths = getTotalKillsDeaths(data).deaths;
|
|
66
68
|
/**
|
|
67
69
|
* Kill Death ratio
|
|
68
70
|
* @type {number}
|
|
@@ -104,6 +106,7 @@ class Duels {
|
|
|
104
106
|
*/
|
|
105
107
|
this.uhc = {
|
|
106
108
|
'overall': {
|
|
109
|
+
division: getDivision(data, 'uhc'),
|
|
107
110
|
winstreak: data.current_uhc_winstreak || 0,
|
|
108
111
|
bestWinstreak: data.best_uhc_winstreak || 0,
|
|
109
112
|
kills: (data.uhc_duel_kills || 0) + (data.uhc_doubles_kills || 0) + (data.uhc_four_kills || 0) + (data.uhc_meetup_kills || 0),
|
|
@@ -115,6 +118,7 @@ class Duels {
|
|
|
115
118
|
playedGames: (data.uhc_duel_rounds_played || 0) + (data.uhc_doubles_rounds_played || 0) + (data.uhc_four_rounds_played || 0) + (data.uhc_meetup_rounds_played || 0)
|
|
116
119
|
},
|
|
117
120
|
'1v1': {
|
|
121
|
+
division: getDivision(data, 'uhc'),
|
|
118
122
|
winstreak: data.current_winstreak_mode_uhc_duel || 0,
|
|
119
123
|
bestWinstreak: data.best_winstreak_mode_uhc_duel || 0,
|
|
120
124
|
kills: data.uhc_duel_kills || 0,
|
|
@@ -126,6 +130,7 @@ class Duels {
|
|
|
126
130
|
playedGames: data.uhc_duel_rounds_played || 0
|
|
127
131
|
},
|
|
128
132
|
'2v2': {
|
|
133
|
+
division: getDivision(data, 'uhc'),
|
|
129
134
|
winstreak: data.current_winstreak_mode_uhc_doubles || 0,
|
|
130
135
|
bestWinstreak: data.best_winstreak_mode_uhc_doubles || 0,
|
|
131
136
|
kills: data.uhc_doubles_kills || 0,
|
|
@@ -137,6 +142,7 @@ class Duels {
|
|
|
137
142
|
playedGames: data.uhc_doubles_rounds_played || 0
|
|
138
143
|
},
|
|
139
144
|
'4v4': {
|
|
145
|
+
division: getDivision(data, 'uhc'),
|
|
140
146
|
winstreak: data.current_winstreak_mode_uhc_four || 0,
|
|
141
147
|
bestWinstreak: data.best_winstreak_mode_uhc_four || 0,
|
|
142
148
|
kills: data.uhc_four_kills || 0,
|
|
@@ -148,6 +154,7 @@ class Duels {
|
|
|
148
154
|
playedGames: data.uhc_four_rounds_played || 0
|
|
149
155
|
},
|
|
150
156
|
'meetup': {
|
|
157
|
+
division: getDivision(data, 'uhc'),
|
|
151
158
|
winstreak: data.current_winstreak_mode_uhc_meetup || 0,
|
|
152
159
|
bestWinstreak: data.best_winstreak_mode_uhc_meetup || 0,
|
|
153
160
|
kills: data.uhc_meetup_kills || 0,
|
|
@@ -159,11 +166,62 @@ class Duels {
|
|
|
159
166
|
playedGames: data.uhc_meetup_rounds_played || 0
|
|
160
167
|
}
|
|
161
168
|
};
|
|
169
|
+
/**
|
|
170
|
+
* @type {DuelsParkour}
|
|
171
|
+
*/
|
|
172
|
+
this.parkour = {
|
|
173
|
+
division: getDivision(data, 'parkour'),
|
|
174
|
+
deaths: data.parkour_eight_deaths || 0,
|
|
175
|
+
wins: data.parkour_eight_wins || 0,
|
|
176
|
+
losses: data.parkour_eight_losses || 0,
|
|
177
|
+
WLRatio: divide(data.parkour_eight_wins, data.parkour_eight_losses),
|
|
178
|
+
playedGames: data.parkour_eight_rounds_played || 0
|
|
179
|
+
};
|
|
180
|
+
/**
|
|
181
|
+
* @type {DuelsBoxing}
|
|
182
|
+
*/
|
|
183
|
+
this.boxing = {
|
|
184
|
+
division: getDivision(data, 'boxing'),
|
|
185
|
+
kills: data.boxing_duel_kills || 0,
|
|
186
|
+
wins: data.boxing_duel_wins || 0,
|
|
187
|
+
losses: data.boxing_duel_losses || 0,
|
|
188
|
+
WLRatio: divide(data.boxing_duel_wins, data.boxing_duel_losses),
|
|
189
|
+
playedGames: data.boxing_duel_rounds_played || 0,
|
|
190
|
+
meleeSwings: data.boxing_duel_melee_swings || 0,
|
|
191
|
+
meleeHits: data.boxing_duel_melee_hits || 0
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* @type {DuelsBowspleef}
|
|
195
|
+
*/
|
|
196
|
+
this.bowspleef = {
|
|
197
|
+
division: getDivision(data, 'tnt_games'),
|
|
198
|
+
winstreak: data.current_tnt_games_winstreak || 0,
|
|
199
|
+
bestWinstreak: data.best_tnt_games_winstreak || 0,
|
|
200
|
+
bowShots: data.bowspleef_duel_bow_shots || 0,
|
|
201
|
+
deaths: data.bowspleef_duel_deaths || 0,
|
|
202
|
+
wins: data.bowspleef_duel_wins || 0,
|
|
203
|
+
losses: data.bowspleef_duel_losses || 0,
|
|
204
|
+
WLRatio: divide((data.bowspleef_duel_wins || 0), (data.bowspleef_duel_losses || 0)),
|
|
205
|
+
playedGames: data.bowspleef_duel_rounds_played || 0
|
|
206
|
+
};
|
|
207
|
+
/**
|
|
208
|
+
* @type {DuelsArena}
|
|
209
|
+
*/
|
|
210
|
+
this.arena = {
|
|
211
|
+
kills: data.duel_arena_kills || 0,
|
|
212
|
+
deaths: data.duel_arena_deaths || 0,
|
|
213
|
+
KDRatio: divide(data.duel_arena_kills, data.duel_arena_deaths),
|
|
214
|
+
wins: data.duel_arena_wins || 0,
|
|
215
|
+
losses: data.duel_arena_losses || 0,
|
|
216
|
+
WLRatio: divide(data.duel_arena_wins, data.duel_arena_losses),
|
|
217
|
+
playedGames: data.duel_arena_rounds_played || 0
|
|
218
|
+
};
|
|
162
219
|
/**
|
|
163
220
|
* MegaWalls duels stats
|
|
164
221
|
* @type {DuelsModeStats}
|
|
165
222
|
*/
|
|
166
223
|
this.megawalls = {
|
|
224
|
+
division: getDivision(data, 'mega_walls'),
|
|
167
225
|
winstreak: data.current_winstreak_mode_mw_duel || 0,
|
|
168
226
|
bestWinstreak: data.best_winstreak_mode_mw_duel || 0,
|
|
169
227
|
kills: data.mw_duel_kills || 0,
|
|
@@ -180,6 +238,7 @@ class Duels {
|
|
|
180
238
|
*/
|
|
181
239
|
this.op = {
|
|
182
240
|
'overall': {
|
|
241
|
+
division: getDivision(data, 'op'),
|
|
183
242
|
winstreak: data.current_op_winstreak || 0,
|
|
184
243
|
bestWinstreak: data.best_op_winstreak || 0,
|
|
185
244
|
kills: (data.op_duel_kills || 0) + (data.op_doubles_kills || 0),
|
|
@@ -191,6 +250,7 @@ class Duels {
|
|
|
191
250
|
playedGames: (data.op_duel_rounds_played || 0) + (data.op_doubles_rounds_played || 0)
|
|
192
251
|
},
|
|
193
252
|
'1v1': {
|
|
253
|
+
division: getDivision(data, 'op'),
|
|
194
254
|
winstreak: data.current_winstreak_mode_op_duel || 0,
|
|
195
255
|
bestWinstreak: data.best_winstreak_mode_op_duel || 0,
|
|
196
256
|
kills: data.op_duel_kills || 0,
|
|
@@ -202,6 +262,7 @@ class Duels {
|
|
|
202
262
|
playedGames: data.op_duel_rounds_played || 0
|
|
203
263
|
},
|
|
204
264
|
'2v2': {
|
|
265
|
+
division: getDivision(data, 'op'),
|
|
205
266
|
winstreak: data.current_winstreak_mode_op_doubles || 0,
|
|
206
267
|
bestWinstreak: data.best_winstreak_mode_op_doubles || 0,
|
|
207
268
|
kills: data.op_doubles_kills || 0,
|
|
@@ -219,6 +280,7 @@ class Duels {
|
|
|
219
280
|
*/
|
|
220
281
|
this.skywars = {
|
|
221
282
|
'overall': {
|
|
283
|
+
division: getDivision(data, 'skywars'),
|
|
222
284
|
winstreak: data.current_skywars_winstreak || 0,
|
|
223
285
|
bestWinstreak: data.best_skywars_winstreak || 0,
|
|
224
286
|
kills: ((data.sw_duel_kills || 0) + (data.sw_doubles_kills || 0)),
|
|
@@ -230,6 +292,7 @@ class Duels {
|
|
|
230
292
|
playedGames: (data.sw_duel_rounds_played || 0) + (data.sw_doubles_rounds_played || 0)
|
|
231
293
|
},
|
|
232
294
|
'1v1': {
|
|
295
|
+
division: getDivision(data, 'skywars'),
|
|
233
296
|
winstreak: data.current_winstreak_mode_sw_duel || 0,
|
|
234
297
|
bestWinstreak: data.best_winstreak_mode_sw_duel || 0,
|
|
235
298
|
kills: data.sw_duel_kills || 0,
|
|
@@ -241,6 +304,7 @@ class Duels {
|
|
|
241
304
|
playedGames: data.sw_duel_rounds_played || 0
|
|
242
305
|
},
|
|
243
306
|
'2v2': {
|
|
307
|
+
division: getDivision(data, 'skywars'),
|
|
244
308
|
winstreak: data.current_winstreak_mode_sw_doubles || 0,
|
|
245
309
|
bestWinstreak: data.best_winstreak_mode_sw_doubles || 0,
|
|
246
310
|
kills: data.sw_doubles_kills || 0,
|
|
@@ -257,6 +321,7 @@ class Duels {
|
|
|
257
321
|
* @type {DuelsModeStats}
|
|
258
322
|
*/
|
|
259
323
|
this.sumo = {
|
|
324
|
+
division: getDivision(data, 'sumo'),
|
|
260
325
|
winstreak: data.current_winstreak_mode_sumo_duel || 0,
|
|
261
326
|
bestWinstreak: data.best_winstreak_mode_sumo_duel || 0,
|
|
262
327
|
kills: data.sumo_duel_kills || 0,
|
|
@@ -272,6 +337,7 @@ class Duels {
|
|
|
272
337
|
* @type {DuelsModeStats}
|
|
273
338
|
*/
|
|
274
339
|
this.classic = {
|
|
340
|
+
division: getDivision(data, 'classic'),
|
|
275
341
|
winstreak: data.current_winstreak_mode_classic_duel || 0,
|
|
276
342
|
bestWinstreak: data.best_winstreak_mode_classic_duel || 0,
|
|
277
343
|
kills: data.classic_duel_kills || 0,
|
|
@@ -287,6 +353,7 @@ class Duels {
|
|
|
287
353
|
* @type {DuelsModeStats}
|
|
288
354
|
*/
|
|
289
355
|
this.combo = {
|
|
356
|
+
division: getDivision(data, 'combo'),
|
|
290
357
|
winstreak: data.current_winstreak_mode_combo_duel || 0,
|
|
291
358
|
bestWinstreak: data.best_winstreak_mode_combo_duel || 0,
|
|
292
359
|
kills: data.combo_duel_kills || 0,
|
|
@@ -303,17 +370,19 @@ class Duels {
|
|
|
303
370
|
*/
|
|
304
371
|
this.bridge = {
|
|
305
372
|
'overall': {
|
|
373
|
+
division: getDivision(data, 'bridge'),
|
|
306
374
|
winstreak: data.current_bridge_winstreak || 0,
|
|
307
375
|
bestWinstreak: data.best_bridge_winstreak || 0,
|
|
308
|
-
kills: ((data.bridge_duel_bridge_kills || 0) + (data.bridge_doubles_bridge_kills || 0) + (data.bridge_2v2v2v2_bridge_kills || 0) + (data.bridge_3v3v3v3_bridge_kills || 0) + (data.bridge_four_bridge_kills || 0)),
|
|
309
|
-
deaths: ((data.bridge_duel_bridge_deaths || 0) + (data.bridge_doubles_bridge_deaths || 0) + (data.bridge_2v2v2v2_bridge_deaths || 0) + (data.bridge_3v3v3v3_bridge_deaths || 0) + (data.bridge_four_bridge_deaths || 0)),
|
|
310
|
-
KDRatio: divide(((data.bridge_duel_bridge_kills || 0) + (data.bridge_doubles_bridge_kills || 0) + (data.bridge_2v2v2v2_bridge_kills || 0) + (data.bridge_3v3v3v3_bridge_kills || 0) + (data.bridge_four_bridge_kills || 0)), ((data.bridge_duel_bridge_deaths || 0) + (data.bridge_doubles_bridge_deaths || 0) + (data.bridge_2v2v2v2_bridge_deaths || 0) + (data.bridge_3v3v3v3_bridge_deaths || 0) + (data.bridge_four_bridge_deaths || 0))),
|
|
311
|
-
wins: ((data.bridge_duel_wins || 0) + (data.bridge_doubles_wins || 0) + (data.bridge_2v2v2v2_wins || 0) + (data.bridge_3v3v3v3_wins || 0) + (data.bridge_four_wins || 0)),
|
|
312
|
-
losses: ((data.bridge_duel_losses || 0) + (data.bridge_doubles_losses || 0) + (data.bridge_2v2v2v2_losses || 0) + (data.bridge_3v3v3v3_losses || 0) + (data.bridge_four_losses || 0)),
|
|
313
|
-
WLRatio: divide(((data.bridge_duel_wins || 0) + (data.bridge_doubles_wins || 0) + (data.bridge_2v2v2v2_wins || 0) + (data.bridge_3v3v3v3_wins || 0) + (data.bridge_four_wins || 0)), ((data.bridge_duel_losses || 0) + (data.bridge_doubles_losses || 0) + (data.bridge_2v2v2v2_losses || 0) + (data.bridge_3v3v3v3_losses || 0) + (data.bridge_four_losses || 0))),
|
|
314
|
-
playedGames: ((data.bridge_duel_rounds_played || 0) + (data.bridge_doubles_rounds_played || 0) + (data.bridge_2v2v2v2_rounds_played || 0) + (data.bridge_3v3v3v3_rounds_played || 0) + (data.bridge_four_rounds_played || 0))
|
|
376
|
+
kills: ((data.bridge_duel_bridge_kills || 0) + (data.bridge_doubles_bridge_kills || 0) + (data.bridge_2v2v2v2_bridge_kills || 0) + (data.bridge_3v3v3v3_bridge_kills || 0) + (data.bridge_four_bridge_kills || 0) + (data.bridge_threes_bridge_kills || 0) + (data.capture_threes_bridge_kills || 0)),
|
|
377
|
+
deaths: ((data.bridge_duel_bridge_deaths || 0) + (data.bridge_doubles_bridge_deaths || 0) + (data.bridge_2v2v2v2_bridge_deaths || 0) + (data.bridge_3v3v3v3_bridge_deaths || 0) + (data.bridge_four_bridge_deaths || 0) + (data.bridge_threes_bridge_deaths || 0) + (data.capture_threes_bridge_deaths || 0)),
|
|
378
|
+
KDRatio: divide(((data.bridge_duel_bridge_kills || 0) + (data.bridge_doubles_bridge_kills || 0) + (data.bridge_2v2v2v2_bridge_kills || 0) + (data.bridge_3v3v3v3_bridge_kills || 0) + (data.bridge_four_bridge_kills || 0) + (data.bridge_threes_bridge_kills || 0) + (data.capture_threes_bridge_kills || 0)), ((data.bridge_duel_bridge_deaths || 0) + (data.bridge_doubles_bridge_deaths || 0) + (data.bridge_2v2v2v2_bridge_deaths || 0) + (data.bridge_3v3v3v3_bridge_deaths || 0) + (data.bridge_four_bridge_deaths || 0) + (data.bridge_threes_bridge_deaths || 0) + (data.capture_threes_bridge_deaths || 0))),
|
|
379
|
+
wins: ((data.bridge_duel_wins || 0) + (data.bridge_doubles_wins || 0) + (data.bridge_2v2v2v2_wins || 0) + (data.bridge_3v3v3v3_wins || 0) + (data.bridge_four_wins || 0) + (data.bridge_threes_bridge_wins || 0) + (data.capture_threes_wins || 0)),
|
|
380
|
+
losses: ((data.bridge_duel_losses || 0) + (data.bridge_doubles_losses || 0) + (data.bridge_2v2v2v2_losses || 0) + (data.bridge_3v3v3v3_losses || 0) + (data.bridge_four_losses || 0) + (data.bridge_threes_bridge_losses || 0) + (data.capture_threes_bridge_losses || 0)),
|
|
381
|
+
WLRatio: divide(((data.bridge_duel_wins || 0) + (data.bridge_doubles_wins || 0) + (data.bridge_2v2v2v2_wins || 0) + (data.bridge_3v3v3v3_wins || 0) + (data.bridge_four_wins || 0) + (data.bridge_threes_bridge_wins || 0) + (data.capture_threes_wins || 0)), ((data.bridge_duel_losses || 0) + (data.bridge_doubles_losses || 0) + (data.bridge_2v2v2v2_losses || 0) + (data.bridge_3v3v3v3_losses || 0) + (data.bridge_four_losses || 0) + (data.bridge_threes_bridge_losses || 0) + (data.capture_threes_bridge_losses || 0))),
|
|
382
|
+
playedGames: ((data.bridge_duel_rounds_played || 0) + (data.bridge_doubles_rounds_played || 0) + (data.bridge_2v2v2v2_rounds_played || 0) + (data.bridge_3v3v3v3_rounds_played || 0) + (data.bridge_four_rounds_played || 0) + (data.bridge_threes_bridge_rounds_played || 0) + (data.capture_threes_rounds_played || 0))
|
|
315
383
|
},
|
|
316
384
|
'1v1': {
|
|
385
|
+
division: getDivision(data, 'bridge'),
|
|
317
386
|
winstreak: data.current_winstreak_mode_bridge_duel || 0,
|
|
318
387
|
bestWinstreak: data.best_winstreak_mode_bridge_duel || 0,
|
|
319
388
|
kills: data.bridge_duel_bridge_kills || 0,
|
|
@@ -325,6 +394,7 @@ class Duels {
|
|
|
325
394
|
playedGames: data.bridge_duel_rounds_played || 0
|
|
326
395
|
},
|
|
327
396
|
'2v2': {
|
|
397
|
+
division: getDivision(data, 'bridge'),
|
|
328
398
|
winstreak: data.current_winstreak_mode_bridge_doubles || 0,
|
|
329
399
|
bestWinstreak: data.best_winstreak_mode_bridge_doubles || 0,
|
|
330
400
|
kills: data.bridge_doubles_bridge_kills || 0,
|
|
@@ -335,7 +405,20 @@ class Duels {
|
|
|
335
405
|
WLRatio: divide(data.bridge_doubles_wins, data.bridge_doubles_losses),
|
|
336
406
|
playedGames: data.bridge_doubles_rounds_played || 0
|
|
337
407
|
},
|
|
408
|
+
'3v3': {
|
|
409
|
+
division: getDivision(data, 'bridge'),
|
|
410
|
+
winstreak: data.current_winstreak_mode_bridge_threes || 0,
|
|
411
|
+
bestWinstreak: data.best_winstreak_mode_bridge_threes || 0,
|
|
412
|
+
kills: data.bridge_threes_bridge_kills || 0,
|
|
413
|
+
deaths: data.bridge_threes_bridge_deaths || 0,
|
|
414
|
+
KDRatio: divide(data.bridge_threes_bridge_kills, data.bridge_threes_bridge_deaths),
|
|
415
|
+
wins: data.bridge_threes_wins || 0,
|
|
416
|
+
losses: data.bridge_threes_losses || 0,
|
|
417
|
+
WLRatio: divide(data.bridge_threes_wins, data.bridge_threes_losses),
|
|
418
|
+
playedGames: data.bridge_threes_rounds_played || 0
|
|
419
|
+
},
|
|
338
420
|
'2v2v2v2': {
|
|
421
|
+
division: getDivision(data, 'bridge'),
|
|
339
422
|
winstreak: data.current_winstreak_mode_bridge_2v2v2v2 || 0,
|
|
340
423
|
bestWinstreak: data.best_winstreak_mode_bridge_2v2v2v2 || 0,
|
|
341
424
|
kills: data.bridge_2v2v2v2_bridge_kills || 0,
|
|
@@ -347,6 +430,7 @@ class Duels {
|
|
|
347
430
|
playedGames: data.bridge_2v2v2v2_rounds_played || 0
|
|
348
431
|
},
|
|
349
432
|
'3v3v3v3': {
|
|
433
|
+
division: getDivision(data, 'bridge'),
|
|
350
434
|
winstreak: data.current_winstreak_mode_bridge_3v3v3v3 || 0,
|
|
351
435
|
bestWinstreak: data.best_winstreak_mode_bridge_3v3v3v3 || 0,
|
|
352
436
|
kills: data.bridge_3v3v3v3_bridge_kills || 0,
|
|
@@ -358,6 +442,7 @@ class Duels {
|
|
|
358
442
|
playedGames: data.bridge_3v3v3v3_rounds_played || 0
|
|
359
443
|
},
|
|
360
444
|
'4v4': {
|
|
445
|
+
division: getDivision(data, 'bridge'),
|
|
361
446
|
winstreak: data.current_winstreak_mode_bridge_four || 0,
|
|
362
447
|
bestWinstreak: data.best_winstreak_mode_bridge_four || 0,
|
|
363
448
|
kills: data.bridge_four_bridge_kills || 0,
|
|
@@ -367,6 +452,18 @@ class Duels {
|
|
|
367
452
|
losses: data.bridge_four_losses || 0,
|
|
368
453
|
WLRatio: divide(data.bridge_four_wins, data.bridge_four_losses),
|
|
369
454
|
playedGames: data.bridge_four_rounds_played || 0
|
|
455
|
+
},
|
|
456
|
+
// eslint-disable-next-line quote-props
|
|
457
|
+
ctf: {
|
|
458
|
+
division: getDivision(data, 'bridge'),
|
|
459
|
+
kills: data.capture_threes_bridge_kills || 0,
|
|
460
|
+
deaths: data.capture_threes_bridge_deaths || 0,
|
|
461
|
+
KDRatio: divide(data.capture_threes_bridge_kills, data.capture_threes_bridge_deaths),
|
|
462
|
+
wins: data.capture_threes_wins || 0,
|
|
463
|
+
losses: data.capture_threes_losses || 0,
|
|
464
|
+
WLRatio: divide(data.capture_threes_wins, data.capture_threes_losses),
|
|
465
|
+
captures: data.capture_threes_captures || 0,
|
|
466
|
+
playedGames: data.capture_threes_rounds_played || 0
|
|
370
467
|
}
|
|
371
468
|
};
|
|
372
469
|
/**
|
|
@@ -374,6 +471,7 @@ class Duels {
|
|
|
374
471
|
* @type {DuelsModeStats}
|
|
375
472
|
*/
|
|
376
473
|
this.blitz = {
|
|
474
|
+
division: getDivision(data, 'blitz'),
|
|
377
475
|
winstreak: data.current_winstreak_mode_blitz_duel || 0,
|
|
378
476
|
bestWinstreak: data.best_winstreak_mode_blitz_duel || 0,
|
|
379
477
|
kills: data.blitz_duel_kills || 0,
|
|
@@ -389,6 +487,7 @@ class Duels {
|
|
|
389
487
|
* @type {DuelsModeStats}
|
|
390
488
|
*/
|
|
391
489
|
this.nodebuff = {
|
|
490
|
+
division: getDivision(data, 'no_debuff'),
|
|
392
491
|
winstreak: data.current_winstreak_mode_potion_duel || 0,
|
|
393
492
|
bestWinstreak: data.best_winstreak_mode_potion_duel || 0,
|
|
394
493
|
kills: data.potion_duel_kills || 0,
|
|
@@ -404,6 +503,7 @@ class Duels {
|
|
|
404
503
|
* @type {DuelsModeStats}
|
|
405
504
|
*/
|
|
406
505
|
this.bow = {
|
|
506
|
+
division: getDivision(data, 'bow'),
|
|
407
507
|
winstreak: data.current_winstreak_mode_bow_duel || 0,
|
|
408
508
|
bestWinstreak: data.best_winstreak_mode_bow_duel || 0,
|
|
409
509
|
kills: data.bow_duel_kills || 0,
|
|
@@ -418,8 +518,76 @@ class Duels {
|
|
|
418
518
|
}
|
|
419
519
|
/**
|
|
420
520
|
* @typedef {object} DuelsModeStats
|
|
421
|
-
* @property {number} winstreak Current winstreak
|
|
521
|
+
* @property {number|undefined} winstreak Current winstreak
|
|
522
|
+
* @property {number|undefined} bestWinstreak Best winstreak
|
|
523
|
+
* @property {string|null} division Division
|
|
524
|
+
* @property {number} kills Kills
|
|
525
|
+
* @property {number} deaths Deaths
|
|
526
|
+
* @property {number} wins Wins
|
|
527
|
+
* @property {number} losses Losses
|
|
528
|
+
* @property {number} KDRatio Kill/Death ratio
|
|
529
|
+
* @property {number} WLRatio Win/Loss ratio
|
|
530
|
+
* @property {number} playedGames Played games
|
|
531
|
+
*/
|
|
532
|
+
/**
|
|
533
|
+
* @typedef {object} BridgeModeStats
|
|
534
|
+
* @property {number|undefined} winstreak Current winstreak
|
|
535
|
+
* @property {number|undefined} bestWinstreak Best winstreak
|
|
536
|
+
* @property {string|null} division Division
|
|
537
|
+
* @property {number} kills Kills
|
|
538
|
+
* @property {number} deaths Deaths
|
|
539
|
+
* @property {number} wins Wins
|
|
540
|
+
* @property {number} losses Losses
|
|
541
|
+
* @property {number} KDRatio Kill/Death ratio
|
|
542
|
+
* @property {number} WLRatio Win/Loss ratio
|
|
543
|
+
* @property {number} playedGames Played games
|
|
544
|
+
* @property {number} goals Goals
|
|
545
|
+
*/
|
|
546
|
+
/**
|
|
547
|
+
* @typedef {object} DuelsBowspleef
|
|
548
|
+
* @property {string|null} division Division
|
|
549
|
+
* @property {number} winstreak Winstreak
|
|
422
550
|
* @property {number} bestWinstreak Best winstreak
|
|
551
|
+
* @property {number} bowShots Bow shots
|
|
552
|
+
* @property {number} deaths Deaths
|
|
553
|
+
* @property {number} wins Wins
|
|
554
|
+
* @property {number} losses Losses
|
|
555
|
+
* @property {number} WLRatio Win/Loss ratio
|
|
556
|
+
* @property {number} playedGames Played games
|
|
557
|
+
*/
|
|
558
|
+
/**
|
|
559
|
+
* @typedef {object} BridgeCTFModeStats
|
|
560
|
+
* @property {string|null} division Division
|
|
561
|
+
* @property {number} kills Kills
|
|
562
|
+
* @property {number} deaths Deaths
|
|
563
|
+
* @property {number} wins Wins
|
|
564
|
+
* @property {number} losses Losses
|
|
565
|
+
* @property {number} KDRatio Kill/Death ratio
|
|
566
|
+
* @property {number} WLRatio Win/Loss ratio
|
|
567
|
+
* @property {number} playedGames Played games
|
|
568
|
+
* @property {number} captures Captures
|
|
569
|
+
*/
|
|
570
|
+
/**
|
|
571
|
+
* @typedef {object} DuelsParkour
|
|
572
|
+
* @property {number} deaths Deaths
|
|
573
|
+
* @property {number} wins Wins
|
|
574
|
+
* @property {number} losses Losses
|
|
575
|
+
* @property {number} WLRatio Win/Loss ratio
|
|
576
|
+
* @property {number} playedGames Played games
|
|
577
|
+
*/
|
|
578
|
+
/**
|
|
579
|
+
* @typedef {object} DuelsBoxing
|
|
580
|
+
* @property {string} division Division
|
|
581
|
+
* @property {number} kills Kills
|
|
582
|
+
* @property {number} wins Wins
|
|
583
|
+
* @property {number} losses Losses
|
|
584
|
+
* @property {number} WLRatio Win/Loss ratio
|
|
585
|
+
* @property {number} playedGames Played games
|
|
586
|
+
* @property {number} meleeSwings Melee swings
|
|
587
|
+
* @property {number} meleeHits Melee hits
|
|
588
|
+
*/
|
|
589
|
+
/**
|
|
590
|
+
* @typedef {object} DuelsArena
|
|
423
591
|
* @property {number} kills Kills
|
|
424
592
|
* @property {number} deaths Deaths
|
|
425
593
|
* @property {number} wins Wins
|
|
@@ -450,11 +618,13 @@ class Duels {
|
|
|
450
618
|
*/
|
|
451
619
|
/**
|
|
452
620
|
* @typedef {object} DuelsBridge
|
|
453
|
-
* @property {
|
|
454
|
-
* @property {
|
|
455
|
-
* @property {
|
|
456
|
-
* @property {
|
|
457
|
-
* @property {
|
|
458
|
-
* @property {
|
|
621
|
+
* @property {BridgeModeStats} overall Overall The Bridge duel stats
|
|
622
|
+
* @property {BridgeModeStats} '1v1' The Bridge Duel 1v1 stats
|
|
623
|
+
* @property {BridgeModeStats} '2v2' The Bridge Duel 2v2 stats
|
|
624
|
+
* @property {BridgeModeStats} '3v3' The Bridge Duel 3v3 stats
|
|
625
|
+
* @property {BridgeModeStats} '4v4' The Bridge Duel 4v4 stats
|
|
626
|
+
* @property {BridgeModeStats} '2v2v2v2' The Bridge Duel 2v2v2v2 stats
|
|
627
|
+
* @property {BridgeModeStats} '3v3v3v3' The Bridge Duel 3v3v3v3 stats
|
|
628
|
+
* @property {BridgeCTFModeStats} ctf The Bridge Capture The Flag duel 3v3 stats
|
|
459
629
|
*/
|
|
460
630
|
module.exports = Duels;
|
|
@@ -66,6 +66,111 @@ class TurboKartRacers {
|
|
|
66
66
|
* @type {number}
|
|
67
67
|
*/
|
|
68
68
|
this.junglerushPlays = data.junglerush_plays || 0;
|
|
69
|
+
/**
|
|
70
|
+
* Canyon Map Plays
|
|
71
|
+
* @type {number}
|
|
72
|
+
*/
|
|
73
|
+
this.canyonPlays = data.canyon_plays || 0;
|
|
74
|
+
/**
|
|
75
|
+
* Retro Bronze Trophies
|
|
76
|
+
* @type {number}
|
|
77
|
+
*/
|
|
78
|
+
this.retroBronzeTrophies = data.bronze_trophy_retro || 0;
|
|
79
|
+
/**
|
|
80
|
+
* Jungle Rush Map Plays
|
|
81
|
+
* @type {number}
|
|
82
|
+
*/
|
|
83
|
+
this.retroSilverTrophies = data.silver_trophy_retro || 0;
|
|
84
|
+
/**
|
|
85
|
+
* Jungle Rush Map Plays
|
|
86
|
+
* @type {number}
|
|
87
|
+
*/
|
|
88
|
+
this.retroGoldTrophies = data.gold_trophy_retro || 0;
|
|
89
|
+
/**
|
|
90
|
+
* hypixelgp Bronze Trophies
|
|
91
|
+
* @type {number}
|
|
92
|
+
*/
|
|
93
|
+
this.hypixelgpBronzeTrophies = data.bronze_trophy_hypixelgp || 0;
|
|
94
|
+
/**
|
|
95
|
+
* hypixelgp Silver Trophies
|
|
96
|
+
* @type {number}
|
|
97
|
+
*/
|
|
98
|
+
this.hypixelgpSilverTrophies = data.silver_trophy_hypixelgp || 0;
|
|
99
|
+
/**
|
|
100
|
+
* hypixelgp Gold Trophies
|
|
101
|
+
* @type {number}
|
|
102
|
+
*/
|
|
103
|
+
this.hypixelgpGoldTrophies = data.gold_trophy_hypixelgp || 0;
|
|
104
|
+
/**
|
|
105
|
+
* olympus Bronze Trophies
|
|
106
|
+
* @type {number}
|
|
107
|
+
*/
|
|
108
|
+
this.olympusBronzeTrophies = data.bronze_trophy_olympus || 0;
|
|
109
|
+
/**
|
|
110
|
+
* olympus Silver Trophies
|
|
111
|
+
* @type {number}
|
|
112
|
+
*/
|
|
113
|
+
this.olympusSilverTrophies = data.silver_trophy_olympus || 0;
|
|
114
|
+
/**
|
|
115
|
+
* olympus Gold Trophies
|
|
116
|
+
* @type {number}
|
|
117
|
+
*/
|
|
118
|
+
this.olympusGoldTrophies = data.gold_trophy_olympus || 0;
|
|
119
|
+
/**
|
|
120
|
+
* junglerush Bronze Trophies
|
|
121
|
+
* @type {number}
|
|
122
|
+
*/
|
|
123
|
+
this.junglerushBronzeTrophies = data.bronze_trophy_junglerush || 0;
|
|
124
|
+
/**
|
|
125
|
+
* junglerush Silver Trophies
|
|
126
|
+
* @type {number}
|
|
127
|
+
*/
|
|
128
|
+
this.junglerushSilverTrophies = data.silver_trophy_junglerush || 0;
|
|
129
|
+
/**
|
|
130
|
+
* junglerush Gold Trophies
|
|
131
|
+
* @type {number}
|
|
132
|
+
*/
|
|
133
|
+
this.junglerushGoldTrophies = data.gold_trophy_junglerush || 0;
|
|
134
|
+
/**
|
|
135
|
+
* Canyon Bronze Trophies
|
|
136
|
+
* @type {number}
|
|
137
|
+
*/
|
|
138
|
+
this.canyonBronzeTrophies = data.gold_trophy_canyon || 0;
|
|
139
|
+
/**
|
|
140
|
+
* Canyon Silver Trophies
|
|
141
|
+
* @type {number}
|
|
142
|
+
*/
|
|
143
|
+
this.canyonSilverTrophies = data.gold_trophy_canyon || 0;
|
|
144
|
+
/**
|
|
145
|
+
* Canyon Gold Trophies
|
|
146
|
+
* @type {number}
|
|
147
|
+
*/
|
|
148
|
+
this.canyonGoldTrophies = data.gold_trophy_canyon || 0;
|
|
149
|
+
/**
|
|
150
|
+
* Bananas Recived
|
|
151
|
+
* @type {number}
|
|
152
|
+
*/
|
|
153
|
+
this.bananaHitsReceived = data.banana_hits_received || 0;
|
|
154
|
+
/**
|
|
155
|
+
* Bananas Sent
|
|
156
|
+
* @type {number}
|
|
157
|
+
*/
|
|
158
|
+
this.bananaHitsSent = data.banana_hits_sent || 0;
|
|
159
|
+
/**
|
|
160
|
+
* Blue Torpedos Hit
|
|
161
|
+
* @type {number}
|
|
162
|
+
*/
|
|
163
|
+
this.blueTorpedoHit = data.blue_torpedo_hit || 0;
|
|
164
|
+
/**
|
|
165
|
+
* Grand Prix Status
|
|
166
|
+
* @type {boolean}
|
|
167
|
+
*/
|
|
168
|
+
this.grandPrix = data.grand_prix || 'false';
|
|
169
|
+
/**
|
|
170
|
+
* Grand Prix Tokens
|
|
171
|
+
* @type {number}
|
|
172
|
+
*/
|
|
173
|
+
this.grandPrixTokens = data.grand_prix_tokens || 0;
|
|
69
174
|
}
|
|
70
175
|
}
|
|
71
176
|
module.exports = TurboKartRacers;
|
package/src/structures/Player.js
CHANGED
|
@@ -102,7 +102,7 @@ class Player {
|
|
|
102
102
|
* Player's plus color (must be a MVP+ rank)
|
|
103
103
|
* @type {Color|null}
|
|
104
104
|
*/
|
|
105
|
-
this.plusColor = this.rank === 'MVP+' || this.rank === 'MVP++' ? (data.rankPlusColor ? new Color(data.rankPlusColor) :
|
|
105
|
+
this.plusColor = this.rank === 'MVP+' || this.rank === 'MVP++' ? (data.rankPlusColor ? new Color(data.rankPlusColor) : new Color('RED')) : null;
|
|
106
106
|
/**
|
|
107
107
|
* MVP++ prefix color
|
|
108
108
|
* @type {Color|null}
|
|
@@ -283,14 +283,11 @@ function getRank (player) {
|
|
|
283
283
|
rank = player.prefix.replace(/§[0-9|a-z]|\[|\]/g, '');
|
|
284
284
|
} else if (player.rank && player.rank !== 'NORMAL') {
|
|
285
285
|
switch (player.rank) {
|
|
286
|
-
case 'MODERATOR':
|
|
287
|
-
rank = 'Moderator';
|
|
288
|
-
break;
|
|
289
286
|
case 'YOUTUBER':
|
|
290
287
|
rank = 'YouTube';
|
|
291
288
|
break;
|
|
292
|
-
case '
|
|
293
|
-
rank = '
|
|
289
|
+
case 'GAME_MASTER':
|
|
290
|
+
rank = 'Game Master';
|
|
294
291
|
break;
|
|
295
292
|
case 'ADMIN':
|
|
296
293
|
rank = 'Admin';
|
|
@@ -401,8 +398,7 @@ function parseClaimedRewards (data) {
|
|
|
401
398
|
* * `MVP`
|
|
402
399
|
* * `MVP+`
|
|
403
400
|
* * `MVP++`
|
|
404
|
-
* * `
|
|
405
|
-
* * `Moderator`
|
|
401
|
+
* * `Game Master`
|
|
406
402
|
* * `Admin`
|
|
407
403
|
* * `YouTube`
|
|
408
404
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const dateRegExp = /(\d{1,2})(?:st|nd|rd|th|) ([A-z]+) (\d+)/;
|
|
2
|
-
const versionRegExp =
|
|
2
|
+
const versionRegExp = /v\d+(\.\d+){1,}/;
|
|
3
3
|
/**
|
|
4
4
|
* SkyblockNews
|
|
5
5
|
*/
|
|
@@ -61,8 +61,8 @@ function parseDate(stringDate) {
|
|
|
61
61
|
* @returns {string | null}
|
|
62
62
|
*/
|
|
63
63
|
function parseVer(stringVer) {
|
|
64
|
-
const matches = versionRegExp.
|
|
65
|
-
if (!matches) return null; // this shouldn't really happen
|
|
66
|
-
return
|
|
64
|
+
const matches = versionRegExp.exec(stringVer);
|
|
65
|
+
if (!matches.length) return null; // this shouldn't really happen
|
|
66
|
+
return matches[0];
|
|
67
67
|
}
|
|
68
68
|
module.exports = SkyblockNews;
|