UNPKG

@zikeji/hypixel

Version:

With IntelliSense support & 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, built-in rate-limit handling, flexible

222 lines (217 loc) 4.96 kB
/** * 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"; /** * 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. * @category Helper */ 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] ); }