-
Notifications
You must be signed in to change notification settings - Fork 0
/
api.js
153 lines (140 loc) · 4.64 KB
/
api.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
// do /api in hypixel and add the key below
api_key = "API_KEY_HERE"
// look up your UUID and put it here
uuid = "PLAYER_UUID_HERE"
function getLevel()
{
fetch(`https://api.hypixel.net/status?key=${api_key}&uuid=${uuid}`) // check if player is online
.then(result => result.json())
.then(({ session }) => {
if(session["online"])
{
fetch(`https://api.hypixel.net/player?key=${api_key}&uuid=${uuid}`) // get player data
.then(result => result.json())
.then(({ player }) => {
console.log(player)
if(player["mostRecentGameType"] == "BEDWARS")
{
display(true)
document.getElementById("level").innerHTML = String(player["achievements"]["bedwars_level"])
updateColorBW(player["achievements"]["bedwars_level"])
document.getElementById("progress").innerHTML = getProgressBW(player["stats"]["Bedwars"]["Experience"])
}
else if(player["mostRecentGameType"] == "SKYWARS")
{
display(true)
// to-do: add all symbols from https://pastebin.com/jVNCkpKz
document.getElementById("level").innerHTML = String(player["stats"]["SkyWars"]["levelFormatted"].slice(2,-1))
updateColorSW(player["stats"]["SkyWars"]["levelFormatted"].slice(2,-1))
document.getElementById("progress").innerHTML = getProgressSW(player["stats"]["SkyWars"]["skywars_experience"], player["stats"]["SkyWars"]["levelFormatted"].slice(2,-1))
}
else // player is not in bedwars/skywars
{
display(false)
}
})
}
else // do not show stats is player is not online
{
display(false)
}
})
setTimeout(getLevel, 5000) // send request every 5 seconds
}
// match colors to ingame
const colors = [
["#aaaaaa", "#2a2a2a"], // 0 stars / stone (no prestige)
["#ffffff", "#414141"], // 100 stars / iron
["#f7ac21", "#2d2f05"], // 200 stars / gold
["#55FFFF", "#153f3f"], // 300 stars / diamond
["#00ab0b", "#002f02"], // 400 stars / emerald
["#2ca7a6", "#0c2e2e"], // 500 stars / sapphire
["#a30f15", "#2d0203"], // 600 stars / ruby
["#fe3efd", "#411441"], // 700 stars / crystal
["#693bfc", "#201441"], // 800 stars / opal
["#a700a7", "#2e002e"], // 900 stars / amethyst
]
function updateColorBW(level)
{
prestige = Math.floor(level / 100)
var css = document.querySelector(':root');
css.style.setProperty('--main', colors[prestige][0])
css.style.setProperty('--sub', colors[prestige][1])
}
function updateColorSW(level)
{
// different prestige/color every 5 levels
prestige = Math.floor(level / 5)
var css = document.querySelector(':root');
css.style.setProperty('--main', colors[prestige][0])
css.style.setProperty('--sub', colors[prestige][1])
}
// display exp requirements for next level
function getProgressBW(exp)
{
xp = document.getElementById("xp")
req = document.getElementById("needed")
// remove prestige exp from calculations
np_exp = exp % 487000 // 487000 exp is 100 levels
// levels X00 to X04 require different exp for each level
if(np_exp < 500) // 0 -> 1 star
{
xp.innerHTML = np_exp
req.innerHTML = 500
}
else if(np_exp < 1500) // 1 -> 2 star
{
xp.innerHTML = (np_exp - 500).toLocaleString('en-US')
req.innerHTML = (1000).toLocaleString('en-US')
}
else if(np_exp < 3500) // 2 -> 3 star
{
xp.innerHTML = (np_exp - 1500).toLocaleString('en-US')
req.innerHTML = (2000).toLocaleString('en-US')
}
else if(np_exp < 7000) // 3 -> 4 star
{
xp.innerHTML = (np_exp - 3500).toLocaleString('en-US')
req.innerHTML = (3500).toLocaleString('en-US')
}
else // stars 5-100
{
xp.innerHTML = ((np_exp - 7000) % 5000).toLocaleString('en-US')
req.innerHTML = (5000).toLocaleString('en-US')
}
}
// skywars level exp requirement remains consistent after level 12
const xp_per = [0, 20, 50, 80, 100, 250, 500, 1000, 1500, 2500, 4000, 5000, 10000]
const total_xp_12 = [0, 20, 70, 150, 250, 500, 1000, 2000, 3500, 6000, 10000, 15000]
function getProgressSW(exp, level)
{
xp = document.getElementById("xp")
req = document.getElementById("needed")
if(level <= 12)
{
xp.innerHTML = (exp - total_xp_12[level - 1]).toLocaleString('en-US')
req.innerHTML = (xp_per[level]).toLocaleString('en-US')
}
else
{
offset = 10000 * (level - 12)
xp.innerHTML = (exp - offset - 15000).toLocaleString('en-US')
req.innerHTML = (10000).toLocaleString('en-US')
}
}
// disable showing anything when not playing bedwars/skywars
function display(show)
{
console.log(show)
if(show)
{
document.getElementById("level_line").innerHTML = "Current Level: <span id='level'></span>"
document.getElementById("progress_line").innerHTML = "Progress: <span id='xp'></span>/<span id='needed'></span>"
}
else
{
document.getElementById("level_line").innerHTML = ""
document.getElementById("progress_line").innerHTML = ""
}
}
getLevel()