93 lines
1.6 KiB
JavaScript
93 lines
1.6 KiB
JavaScript
const TIERS = ["HT1", "LT1", "HT2", "LT2", "HT3", "LT3", "HT4", "LT4", "HT5", "LT5"];
|
|
|
|
const TIER_POINTS = {
|
|
HT1: 60,
|
|
LT1: 45,
|
|
HT2: 30,
|
|
LT2: 20,
|
|
HT3: 10,
|
|
LT3: 6,
|
|
HT4: 4,
|
|
LT4: 3,
|
|
HT5: 2,
|
|
LT5: 1,
|
|
};
|
|
|
|
const GAMEMODES = [
|
|
"vanilla",
|
|
"mace",
|
|
"axe",
|
|
"sword",
|
|
"smp",
|
|
"diamondsmp",
|
|
"uhc",
|
|
"pot",
|
|
"nethop",
|
|
"cart",
|
|
];
|
|
|
|
const GAMEMODE_LABELS = {
|
|
vanilla: "Vanilla",
|
|
mace: "Mace",
|
|
axe: "Axe",
|
|
sword: "Sword",
|
|
smp: "SMP",
|
|
diamondsmp: "Diamond SMP",
|
|
uhc: "UHC",
|
|
pot: "Pot",
|
|
nethop: "Neth OP",
|
|
cart: "Cart",
|
|
};
|
|
|
|
const USERNAME_REGEX = /^[A-Za-z0-9_]{3,16}$/;
|
|
const REGIONS = ["NA", "EU", "AS", "AU"];
|
|
|
|
function avatarUrl(username) {
|
|
return `https://render.crafty.gg/3d/bust/${encodeURIComponent(username)}`;
|
|
}
|
|
|
|
function isValidTier(tier) {
|
|
return TIERS.includes(String(tier || "").toUpperCase());
|
|
}
|
|
|
|
function isValidGamemode(gamemode) {
|
|
return GAMEMODES.includes(String(gamemode || "").toLowerCase());
|
|
}
|
|
|
|
function normalizeTier(tier) {
|
|
return String(tier || "").toUpperCase();
|
|
}
|
|
|
|
function normalizeGamemode(gamemode) {
|
|
return String(gamemode || "").toLowerCase();
|
|
}
|
|
|
|
function tierToPoints(tier) {
|
|
return TIER_POINTS[tier] || 0;
|
|
}
|
|
|
|
function isValidRegion(region) {
|
|
return REGIONS.includes(String(region || "").toUpperCase());
|
|
}
|
|
|
|
function normalizeRegion(region) {
|
|
return String(region || "").toUpperCase();
|
|
}
|
|
|
|
module.exports = {
|
|
TIERS,
|
|
TIER_POINTS,
|
|
GAMEMODES,
|
|
GAMEMODE_LABELS,
|
|
USERNAME_REGEX,
|
|
REGIONS,
|
|
avatarUrl,
|
|
isValidTier,
|
|
isValidGamemode,
|
|
isValidRegion,
|
|
normalizeTier,
|
|
normalizeGamemode,
|
|
normalizeRegion,
|
|
tierToPoints,
|
|
};
|