diff --git a/apps/discord-bot/src/commands/arcade/arcade.profile.tsx b/apps/discord-bot/src/commands/arcade/arcade.profile.tsx
index bb7139c9a..b0c19e2e2 100644
--- a/apps/discord-bot/src/commands/arcade/arcade.profile.tsx
+++ b/apps/discord-bot/src/commands/arcade/arcade.profile.tsx
@@ -6,11 +6,10 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
-import { ArcadeModes, FormattedGame, GameMode } from "@statsify/schemas";
+import { ArcadeModes, FormattedGame, type GameMode } from "@statsify/schemas";
import {
BlockingDeadTable,
BountyHuntersTable,
- CaptureTheWoolTable,
CreeperAttackTable,
DragonWarsTable,
DropperTable,
@@ -29,7 +28,6 @@ import {
SeasonalTable,
ThrowOutTable,
ZombiesTable,
- captureTheWoolSiderbar,
} from "./modes/index.js";
import { Container, Footer, Header, SidebarItem } from "#components";
import type { BaseProfileProps } from "#commands/base.hypixel-command";
@@ -51,7 +49,7 @@ export const ArcadeProfile = ({
}: ArcadeProfileProps) => {
const { arcade } = player.stats;
- let sidebar: SidebarItem[] = [
+ const sidebar: SidebarItem[] = [
[t("stats.coins"), t(arcade.coins), "§6"],
[t("stats.coinConversions"), t(arcade.coinConversions), "§e"],
[t("stats.arcadeWins"), t(arcade.wins), "§b"],
@@ -69,11 +67,6 @@ export const ArcadeProfile = ({
table = ;
break;
- case "captureTheWool":
- table = ;
- sidebar = captureTheWoolSiderbar(arcade, t);
- break;
-
case "creeperAttack":
table = ;
break;
diff --git a/apps/discord-bot/src/commands/arcade/dropper.profile.tsx b/apps/discord-bot/src/commands/arcade/dropper.profile.tsx
index ded83fcef..d15a9ddb3 100644
--- a/apps/discord-bot/src/commands/arcade/dropper.profile.tsx
+++ b/apps/discord-bot/src/commands/arcade/dropper.profile.tsx
@@ -16,7 +16,7 @@
import { Container, Footer, Header } from "#components";
import { DropperMapsTable, DropperTable } from "./modes/index.js";
-import { DropperModes, FormattedGame, GameMode } from "@statsify/schemas";
+import { DropperModes, FormattedGame, type GameMode } from "@statsify/schemas";
import type { BaseProfileProps } from "#commands/base.hypixel-command";
export interface DropperProfileProps extends BaseProfileProps {
diff --git a/apps/discord-bot/src/commands/arcade/modes/capture-the-wool.tsx b/apps/discord-bot/src/commands/arcade/modes/capture-the-wool.tsx
deleted file mode 100644
index beeb13196..000000000
--- a/apps/discord-bot/src/commands/arcade/modes/capture-the-wool.tsx
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * Copyright (c) Statsify
- *
- * This source code is licensed under the GNU GPL v3 license found in the
- * LICENSE file in the root directory of this source tree.
- * https://github.com/Statsify/statsify/blob/main/LICENSE
- */
-
-import { Historical, If, type SidebarItem, Table } from "#components";
-import { formatTime } from "@statsify/util";
-import type { Arcade, CaptureTheWool } from "@statsify/schemas";
-import type { LocalizeFunction } from "@statsify/discord";
-import type { ProfileTime } from "#commands/base.hypixel-command";
-
-interface CaptureTheWoolTableProps {
- stats: CaptureTheWool;
- t: LocalizeFunction;
- time: ProfileTime;
-}
-
-export const CaptureTheWoolTable = ({ stats, t, time }: CaptureTheWoolTableProps) => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0}>
-
-
- 0}>
-
-
- 0}>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-export function captureTheWoolSiderbar(arcade: Arcade, t: LocalizeFunction): SidebarItem[] {
- const captureTheWool = arcade.captureTheWool;
-
- return [
- [t("stats.coins"), t(arcade.coins), "§6"],
- [t("stats.goldEarned"), t(captureTheWool.goldEarned), "§6"],
- [t("stats.goldSpent"), t(captureTheWool.goldSpent), "§6"],
- ];
-}
diff --git a/apps/discord-bot/src/commands/arcade/modes/index.tsx b/apps/discord-bot/src/commands/arcade/modes/index.tsx
index a31ceac50..98ecf6b7b 100644
--- a/apps/discord-bot/src/commands/arcade/modes/index.tsx
+++ b/apps/discord-bot/src/commands/arcade/modes/index.tsx
@@ -8,7 +8,6 @@
export * from "./blocking-dead.js";
export * from "./bounty-hunters.js";
-export * from "./capture-the-wool.js";
export * from "./creeper-attack.js";
export * from "./dragon-wars.js";
export * from "./dropper.js";
diff --git a/apps/discord-bot/src/commands/arcade/modes/overall-arcade.tsx b/apps/discord-bot/src/commands/arcade/modes/overall-arcade.tsx
index dc7002edc..f074cae81 100644
--- a/apps/discord-bot/src/commands/arcade/modes/overall-arcade.tsx
+++ b/apps/discord-bot/src/commands/arcade/modes/overall-arcade.tsx
@@ -17,12 +17,11 @@ interface OverallArcadeTableProps {
}
export const OverallArcadeTable = ({ stats, t }: OverallArcadeTableProps) => {
- const rowSize = 5;
+ const rowSize = 3;
const games: [string, number][] = [
["Blocking Dead", stats.blockingDead.wins],
["Bounty Hunters", stats.bountyHunters.wins],
- ["Capture The Wool", stats.captureTheWool.wins],
["Dragon Wars", stats.dragonWars.wins],
["Dropper", stats.dropper.wins],
["Ender Spleef", stats.enderSpleef.wins],
@@ -45,7 +44,7 @@ export const OverallArcadeTable = ({ stats, t }: OverallArcadeTableProps) => {
const rows = arrayGroup(games, rowSize);
- const colors = ["§a", "§e", "§6", "§c", "§4"];
+ const colors = ["§d", "§b", "§a", "§e", "§6", "§c"];
return (
diff --git a/apps/discord-bot/src/commands/arenabrawl/arenabrawl.profile.tsx b/apps/discord-bot/src/commands/arenabrawl/arenabrawl.profile.tsx
index 09080547e..97ccdc216 100644
--- a/apps/discord-bot/src/commands/arenabrawl/arenabrawl.profile.tsx
+++ b/apps/discord-bot/src/commands/arenabrawl/arenabrawl.profile.tsx
@@ -6,7 +6,7 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
-import { ArenaBrawlModes, FormattedGame, GameMode } from "@statsify/schemas";
+import { ArenaBrawlModes, FormattedGame, type GameMode } from "@statsify/schemas";
import {
Container,
Footer,
diff --git a/apps/discord-bot/src/commands/base.hypixel-command.ts b/apps/discord-bot/src/commands/base.hypixel-command.ts
index ddd74be62..e425b48b0 100644
--- a/apps/discord-bot/src/commands/base.hypixel-command.ts
+++ b/apps/discord-bot/src/commands/base.hypixel-command.ts
@@ -15,6 +15,7 @@ import {
Page,
PaginateService,
PlayerArgument,
+ SubPage,
} from "@statsify/discord";
import { Container } from "typedi";
import { GamesWithBackgrounds, mapBackground } from "#constants";
@@ -23,7 +24,7 @@ import { getBackground, getLogo } from "@statsify/assets";
import { getTheme } from "#themes";
import { noop } from "@statsify/util";
import { render } from "@statsify/rendering";
-import type { GameMode, GameModes, Player, User } from "@statsify/schemas";
+import type { GameMode, GameModeWithSubModes, GameModes, Player, User } from "@statsify/schemas";
import type { Image } from "skia-canvas";
export type ProfileTime = "LIVE" | HistoricalTimeData;
@@ -48,8 +49,8 @@ export type ModeEmoji = LocalizationString | false | undefined;
export interface BaseHypixelCommand {
getPreProfileData?(player: Player): K | Promise;
- filterModes?(player: Player, modes: GameMode[]): GameMode[];
- getModeEmojis?(modes: GameMode[]): ModeEmoji[];
+ filterModes?(player: Player, modes: GameModeWithSubModes[]): GameModeWithSubModes[];
+ getModeEmojis?(modes: GameModeWithSubModes[]): ModeEmoji[];
}
@Command({
@@ -83,29 +84,71 @@ export abstract class BaseHypixelCommand ({
- label: mode.formatted,
- emoji: emojis[index],
- generator: async (t) => {
- const background = await getBackground(...mapBackground(this.modes, mode.api));
-
- const profile = this.getProfile(
- {
- player,
- skin,
- background,
- logo,
- t,
- user,
- badge,
- time: "LIVE",
+ const pages: Page[] = filteredModes.map((mode, index) => {
+ const pageInput = {
+ label: mode.formatted,
+ emoji: emojis[index],
+ };
+
+ if (mode.submodes.length === 0) {
+ const gameMode = { ...mode, submode: undefined } as unknown as GameMode;
+
+ return {
+ ...pageInput,
+ generator: async (t) => {
+ const background = await getBackground(...mapBackground(this.modes, mode.api));
+
+ const profile = this.getProfile(
+ {
+ player,
+ skin,
+ background,
+ logo,
+ t,
+ user,
+ badge,
+ time: "LIVE",
+ },
+ { mode: gameMode, data }
+ );
+
+ return render(profile, getTheme(user));
},
- { mode, data }
- );
-
- return render(profile, getTheme(user));
- },
- }));
+ };
+ }
+
+ const subPages = mode.submodes.map((submode): SubPage => ({
+ label: submode.formatted,
+ generator: async (t) => {
+ const background = await getBackground(...mapBackground(this.modes, mode.api));
+
+ const gameMode = {
+ api: mode.api,
+ formatted: mode.formatted,
+ hypixel: mode.hypixel,
+ submode,
+ } as GameMode;
+
+ const profile = this.getProfile(
+ {
+ player,
+ skin,
+ background,
+ logo,
+ t,
+ user,
+ badge,
+ time: "LIVE",
+ },
+ { mode: gameMode, data }
+ );
+
+ return render(profile, getTheme(user));
+ },
+ }));
+
+ return { ...pageInput, subPages };
+ });
return this.paginateService.paginate(context, pages);
}
diff --git a/apps/discord-bot/src/commands/bedwars/bedwars-challenges.command.tsx b/apps/discord-bot/src/commands/bedwars/bedwars-challenges.command.tsx
index af309b340..b7323b175 100644
--- a/apps/discord-bot/src/commands/bedwars/bedwars-challenges.command.tsx
+++ b/apps/discord-bot/src/commands/bedwars/bedwars-challenges.command.tsx
@@ -6,7 +6,7 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
-import { BEDWARS_MODES, BedWarsModes, GameMode, Player } from "@statsify/schemas";
+import { BEDWARS_MODES, BedWarsModes, GameModeWithSubModes, Player } from "@statsify/schemas";
import { BaseHypixelCommand, BaseProfileProps } from "#commands/base.hypixel-command";
import { BedWarsChallengesProfile } from "./bedwars-challenges.profile.js";
import { Command } from "@statsify/discord";
@@ -19,8 +19,8 @@ export class BedWarsChallengesCommand extends BaseHypixelCommand {
public filterModes(
player: Player,
- modes: GameMode[]
- ): GameMode[] {
+ modes: GameModeWithSubModes[]
+ ): GameModeWithSubModes[] {
return [modes[0]];
}
diff --git a/apps/discord-bot/src/commands/bedwars/bedwars.profile.tsx b/apps/discord-bot/src/commands/bedwars/bedwars.profile.tsx
index 1cabf35ef..452699499 100644
--- a/apps/discord-bot/src/commands/bedwars/bedwars.profile.tsx
+++ b/apps/discord-bot/src/commands/bedwars/bedwars.profile.tsx
@@ -6,7 +6,7 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
-import { BedWarsModes, FormattedGame, GameMode } from "@statsify/schemas";
+import { BedWarsModes, FormattedGame, type GameMode } from "@statsify/schemas";
import {
Container,
Footer,
diff --git a/apps/discord-bot/src/commands/blitzsg/blitzsg.command.tsx b/apps/discord-bot/src/commands/blitzsg/blitzsg.command.tsx
index c2ba67077..951c0a0e9 100644
--- a/apps/discord-bot/src/commands/blitzsg/blitzsg.command.tsx
+++ b/apps/discord-bot/src/commands/blitzsg/blitzsg.command.tsx
@@ -6,7 +6,7 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
-import { BLITZSG_MODES, BlitzSGModes, GameMode, Player } from "@statsify/schemas";
+import { BLITZSG_MODES, BlitzSGModes, GameModeWithSubModes, Player } from "@statsify/schemas";
import {
BaseHypixelCommand,
BaseProfileProps,
@@ -23,8 +23,8 @@ export class BlitzSGCommand extends BaseHypixelCommand {
public filterModes(
player: Player,
- modes: GameMode[]
- ): GameMode[] {
+ modes: GameModeWithSubModes[]
+ ): GameModeWithSubModes[] {
return filterBlitzKits(player, modes);
}
diff --git a/apps/discord-bot/src/commands/blitzsg/blitzsg.profile.tsx b/apps/discord-bot/src/commands/blitzsg/blitzsg.profile.tsx
index 1de524cb1..a151d08af 100644
--- a/apps/discord-bot/src/commands/blitzsg/blitzsg.profile.tsx
+++ b/apps/discord-bot/src/commands/blitzsg/blitzsg.profile.tsx
@@ -11,7 +11,8 @@ import {
BlitzSGKit,
BlitzSGModes,
FormattedGame,
- GameMode,
+ type GameMode,
+ type GameModeWithSubModes,
Player,
} from "@statsify/schemas";
import {
@@ -193,8 +194,8 @@ export const BlitzSGProfile = ({
export function filterBlitzKits(
player: Player,
- modes: GameMode[]
-): GameMode[] {
+ modes: GameModeWithSubModes[]
+): GameModeWithSubModes[] {
const { blitzsg } = player.stats;
const [overall, ...kits] = modes;
diff --git a/apps/discord-bot/src/commands/challenges/challenges.command.tsx b/apps/discord-bot/src/commands/challenges/challenges.command.tsx
index a9df48a0a..81b2135ce 100644
--- a/apps/discord-bot/src/commands/challenges/challenges.command.tsx
+++ b/apps/discord-bot/src/commands/challenges/challenges.command.tsx
@@ -12,7 +12,7 @@ import {
ModeEmoji,
ProfileData,
} from "#commands/base.hypixel-command";
-import { CHALLENGE_MODES, ChallengeModes, GameId, GameMode } from "@statsify/schemas";
+import { CHALLENGE_MODES, ChallengeModes, GameId, GameModeWithSubModes } from "@statsify/schemas";
import { ChallengesProfile } from "./challenges.profile.js";
import { Command } from "@statsify/discord";
import { Image } from "skia-canvas";
@@ -35,7 +35,7 @@ export class ChallengesCommand extends BaseHypixelCommand<
return { gameIcons: await getAllGameIcons() };
}
- public getModeEmojis(modes: GameMode[]): ModeEmoji[] {
+ public getModeEmojis(modes: GameModeWithSubModes[]): ModeEmoji[] {
return modes.map((m) => m.api !== "overall" && ((t) => t(`emojis:games.${m.api}`)));
}
diff --git a/apps/discord-bot/src/commands/challenges/challenges.profile.tsx b/apps/discord-bot/src/commands/challenges/challenges.profile.tsx
index bd8193f06..c2b5e309c 100644
--- a/apps/discord-bot/src/commands/challenges/challenges.profile.tsx
+++ b/apps/discord-bot/src/commands/challenges/challenges.profile.tsx
@@ -7,15 +7,38 @@
*/
import {
+ ArcadeChallenges,
+ ArenaBrawlChallenges,
+ BedWarsChallenges,
+ BlitzSGChallenges,
+ BuildBattleChallenges,
ChallengeModes,
Challenges,
+ CopsAndCrimsChallenges,
+ DuelsChallenges,
FormattedGame,
GameChallenges,
- GameId,
- GameMode,
+ type GameId,
+ type GameMode,
+ MegaWallsChallenges,
+ MetadataEntry,
MetadataScanner,
+ MurderMysteryChallenges,
+ PaintballChallenges,
+ QuakeChallenges,
+ SkyWarsChallenges,
+ SmashHeroesChallenges,
+ SpeedUHCChallenges,
+ TNTGamesChallenges,
+ TurboKartRacersChallenges,
+ UHCChallenges,
+ VampireZChallenges,
+ WallsChallenges,
+ WarlordsChallenges,
+ WoolGamesChallenges,
} from "@statsify/schemas";
import { Container, Footer, GameList, Header, SidebarItem, Table } from "#components";
+
import { arrayGroup, prettify } from "@statsify/util";
import type { BaseProfileProps } from "#commands/base.hypixel-command";
import type { Image } from "skia-canvas";
@@ -44,12 +67,36 @@ const NormalTable = ({ challenges, t, gameIcons }: NormalTableProps) => {
interface GameTableProps {
gameChallenges: GameChallenges;
- constructor: any;
+ mode: Exclude["api"], "overall">;
t: LocalizeFunction;
}
-const GameTable = ({ gameChallenges, constructor, t }: GameTableProps) => {
- const metadata = MetadataScanner.scan(constructor);
+const METADATA: Record["api"], "overall">, MetadataEntry[]> = {
+ ARCADE: MetadataScanner.scan(ArcadeChallenges),
+ ARENA_BRAWL: MetadataScanner.scan(ArenaBrawlChallenges),
+ BEDWARS: MetadataScanner.scan(BedWarsChallenges),
+ BLITZSG: MetadataScanner.scan(BlitzSGChallenges),
+ BUILD_BATTLE: MetadataScanner.scan(BuildBattleChallenges),
+ COPS_AND_CRIMS: MetadataScanner.scan(CopsAndCrimsChallenges),
+ DUELS: MetadataScanner.scan(DuelsChallenges),
+ MEGAWALLS: MetadataScanner.scan(MegaWallsChallenges),
+ MURDER_MYSTERY: MetadataScanner.scan(MurderMysteryChallenges),
+ PAINTBALL: MetadataScanner.scan(PaintballChallenges),
+ QUAKE: MetadataScanner.scan(QuakeChallenges),
+ SKYWARS: MetadataScanner.scan(SkyWarsChallenges),
+ SMASH_HEROES: MetadataScanner.scan(SmashHeroesChallenges),
+ SPEED_UHC: MetadataScanner.scan(SpeedUHCChallenges),
+ TNT_GAMES: MetadataScanner.scan(TNTGamesChallenges),
+ TURBO_KART_RACERS: MetadataScanner.scan(TurboKartRacersChallenges),
+ UHC: MetadataScanner.scan(UHCChallenges),
+ VAMPIREZ: MetadataScanner.scan(VampireZChallenges),
+ WALLS: MetadataScanner.scan(WallsChallenges),
+ WARLORDS: MetadataScanner.scan(WarlordsChallenges),
+ WOOLGAMES: MetadataScanner.scan(WoolGamesChallenges),
+};
+
+const GameTable = ({ gameChallenges, mode, t }: GameTableProps) => {
+ const metadata = METADATA[mode];
const entries = Object.entries(gameChallenges);
const GROUP_SIZE = entries.length < 5 ? 4 : (entries.length - 1) ** 0.5;
@@ -59,8 +106,9 @@ const GameTable = ({ gameChallenges, constructor, t }: GameTableProps) => {
.filter(([k]) => k !== "total")
.sort((a, b) => b[1] - a[1])
.map(([challenge, completions]) => {
- const field = metadata.find(([k]) => k === challenge);
- const realName = field?.[1]?.leaderboard?.name ?? prettify(challenge);
+ const [_, field] = metadata.find(([k]) => k === challenge)!;
+
+ const realName = field.leaderboard?.name ?? prettify(challenge);
return [realName, t(completions)];
}),
GROUP_SIZE
@@ -107,7 +155,7 @@ export const ChallengesProfile = ({
table = (
);
diff --git a/apps/discord-bot/src/commands/copsandcrims/copsandcrims.profile.tsx b/apps/discord-bot/src/commands/copsandcrims/copsandcrims.profile.tsx
index 7821a3e00..4ffe1ee16 100644
--- a/apps/discord-bot/src/commands/copsandcrims/copsandcrims.profile.tsx
+++ b/apps/discord-bot/src/commands/copsandcrims/copsandcrims.profile.tsx
@@ -7,7 +7,7 @@
*/
import { Container, Footer, Header, Historical, SidebarItem, Table } from "#components";
-import { CopsAndCrimsModes, FormattedGame, GameMode } from "@statsify/schemas";
+import { CopsAndCrimsModes, FormattedGame, type GameMode } from "@statsify/schemas";
import { formatTime } from "@statsify/util";
import type { BaseProfileProps } from "#commands/base.hypixel-command";
diff --git a/apps/discord-bot/src/commands/duels/bridge.profile.tsx b/apps/discord-bot/src/commands/duels/bridge.profile.tsx
index 7e88a1407..9de73e419 100644
--- a/apps/discord-bot/src/commands/duels/bridge.profile.tsx
+++ b/apps/discord-bot/src/commands/duels/bridge.profile.tsx
@@ -6,7 +6,7 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
-import { BridgeModes, FormattedGame, GameMode } from "@statsify/schemas";
+import { BridgeModes, FormattedGame, type GameMode } from "@statsify/schemas";
import {
Container,
Footer,
diff --git a/apps/discord-bot/src/commands/duels/duels.profile.tsx b/apps/discord-bot/src/commands/duels/duels.profile.tsx
index 494499807..646f54b2e 100644
--- a/apps/discord-bot/src/commands/duels/duels.profile.tsx
+++ b/apps/discord-bot/src/commands/duels/duels.profile.tsx
@@ -13,7 +13,7 @@ import {
UHCDuelsTable,
} from "./tables/index.js";
import { Container, Footer, Header, SidebarItem, formatProgression } from "#components";
-import { DuelsModes, FormattedGame, GameMode } from "@statsify/schemas";
+import { DuelsModes, FormattedGame, type GameMode } from "@statsify/schemas";
import { prettify } from "@statsify/util";
import type { BaseProfileProps } from "#commands/base.hypixel-command";
diff --git a/apps/discord-bot/src/commands/historical/historical.base.tsx b/apps/discord-bot/src/commands/historical/historical.base.tsx
index 4e14d758d..0930cbcda 100644
--- a/apps/discord-bot/src/commands/historical/historical.base.tsx
+++ b/apps/discord-bot/src/commands/historical/historical.base.tsx
@@ -7,93 +7,40 @@
*/
import {
- ARCADE_MODES,
- ARENA_BRAWL_MODES,
- BEDWARS_MODES,
- BLITZSG_MODES,
- BRIDGE_MODES,
- BUILD_BATTLE_MODES,
- COPS_AND_CRIMS_MODES,
- DUELS_MODES,
- GENERAL_MODES,
- GameMode,
- GameModes,
- MEGAWALLS_MODES,
- MURDER_MYSTERY_MODES,
- PAINTBALL_MODES,
- PIT_MODES,
- Player,
- QUAKE_MODES,
- SKYWARS_MODES,
- SMASH_HEROES_MODES,
- SPEED_UHC_MODES,
- TNT_GAMES_MODES,
- TURBO_KART_RACERS_MODES,
- UHC_MODES,
- VAMPIREZ_MODES,
- WALLS_MODES,
- WARLORDS_MODES,
- WOOLWARS_MODES,
-} from "@statsify/schemas";
-import {
- ApiService,
Command,
- CommandContext,
EmbedBuilder,
- IMessage,
- PaginateService,
PlayerArgument,
SubCommand,
} from "@statsify/discord";
-import { ArcadeProfile } from "../arcade/arcade.profile.js";
-import { ArenaBrawlProfile } from "../arenabrawl/arenabrawl.profile.js";
-import { BedWarsProfile } from "../bedwars/bedwars.profile.js";
-import { BlitzSGProfile, filterBlitzKits } from "../blitzsg/blitzsg.profile.js";
-import { BridgeProfile } from "../duels/bridge.profile.js";
-import { BuildBattleProfile } from "../buildbattle/buildbattle.profile.js";
-import { Container } from "typedi";
-import { CopsAndCrimsProfile } from "../copsandcrims/copsandcrims.profile.js";
-import { DuelsProfile } from "../duels/duels.profile.js";
-import { GamesWithBackgrounds } from "#constants";
-import { HistoricalGeneralProfile } from "../general/historical-general.profile.js";
-import { MegaWallsProfile, filterMegaWallsKits } from "../megawalls/megawalls.profile.js";
-import { MurderMysteryProfile } from "../murdermystery/murdermystery.profile.js";
-import { PaintballProfile } from "../paintball/paintball.profile.js";
-import { PitProfile } from "../pit/pit.profile.js";
-import { QuakeProfile } from "../quake/quake.profile.js";
+
import { STATUS_COLORS } from "@statsify/logger";
-import { SkyWarsProfile } from "../skywars/skywars.profile.js";
-import { SmashHeroesProfile } from "../smashheroes/smashheroes.profile.js";
-import { SpeedUHCProfile } from "../speeduhc/speeduhc.profile.js";
-import { TNTGamesProfile } from "../tntgames/tntgames.profile.js";
-import { TurboKartRacersProfile } from "../turbokartracers/turbokartracers.profile.js";
-import { UHCProfile } from "../uhc/uhc.profile.js";
-import { VampireZProfile } from "../vampirez/vampirez.profile.js";
-import { WallsProfile } from "../walls/walls.profile.js";
-import { WarlordsProfile } from "../warlords/warlords.profile.js";
-import { WoolWarsProfile } from "../woolwars/woolwars.profile.js";
import { getAssetPath } from "@statsify/assets";
import { readFileSync } from "node:fs";
-import type { BaseProfileProps } from "#commands/base.hypixel-command";
import type { HistoricalType } from "@statsify/api-client";
+const preview = {
+ name: "preview.png",
+ data: readFileSync(getAssetPath("previews/session.png")),
+ type: "image/png",
+};
+
+const embed = new EmbedBuilder()
+ .color(STATUS_COLORS.info)
+ .title((t) => t("historical.disabledWarning.title"))
+ .description((t) => t("historical.disabledWarning.description"))
+ .image(`attachment://${preview.name}`);
+
+const message = { embeds: [embed], files: [preview] };
+
const args = [PlayerArgument];
@Command({ description: "" })
export class HistoricalBase {
- private readonly apiService: ApiService;
- private readonly paginateService: PaginateService;
-
- public constructor(private readonly time: HistoricalType) {
- this.apiService = Container.get(ApiService);
- this.paginateService = Container.get(PaginateService);
- }
+ public constructor(private readonly time: HistoricalType) {}
@SubCommand({ description: (t) => t("commands.historical-arcade"), args })
- public arcade(context: CommandContext) {
- return this.run(context, ARCADE_MODES, (base, mode) => (
-
- ));
+ public arcade() {
+ return message;
}
@SubCommand({
@@ -101,79 +48,53 @@ export class HistoricalBase {
args,
group: "classic",
})
- public arenabrawl(context: CommandContext) {
- return this.run(context, ARENA_BRAWL_MODES, (base, mode) => (
-
- ));
+ public arenabrawl() {
+ return message;
}
@SubCommand({ description: (t) => t("commands.historical-bedwars"), args })
- public bedwars(context: CommandContext) {
- return this.run(context, BEDWARS_MODES, (base, mode) => (
-
- ));
+ public bedwars() {
+ return message;
}
@SubCommand({ description: (t) => t("commands.historical-bridge"), args })
- public bridge(context: CommandContext) {
- return this.run(context, BRIDGE_MODES, (base, mode) => (
-
- ));
+ public bridge() {
+ return message;
}
@SubCommand({ description: (t) => t("commands.historical-blitzsg"), args })
- public blitzsg(context: CommandContext) {
- return this.run(
- context,
- BLITZSG_MODES,
- (base, mode) => ,
- filterBlitzKits
- );
+ public blitzsg() {
+ return message;
}
@SubCommand({ description: (t) => t("commands.historical-buildbattle"), args })
- public buildbattle(context: CommandContext) {
- return this.run(context, BUILD_BATTLE_MODES, (base) => (
-
- ));
+ public buildbattle() {
+ return message;
}
@SubCommand({ description: (t) => t("commands.historical-copsandcrims"), args })
- public copsandcrims(context: CommandContext) {
- return this.run(context, COPS_AND_CRIMS_MODES, (base, mode) => (
-
- ));
+ public copsandcrims() {
+ return message;
}
@SubCommand({ description: (t) => t("commands.historical-duels"), args })
- public duels(context: CommandContext) {
- return this.run(context, DUELS_MODES, (base, mode) => (
-
- ));
+ public duels() {
+ return message;
}
@SubCommand({ description: (t) => t("commands.historical-general"), args })
- public general(context: CommandContext) {
- return this.run(context, GENERAL_MODES, (base) => (
-
- ));
+ public general() {
+ return message;
}
@SubCommand({ description: (t) => t("commands.historical-megawalls"), args })
- public megawalls(context: CommandContext) {
- return this.run(
- context,
- MEGAWALLS_MODES,
- (base, mode) => ,
- filterMegaWallsKits
- );
+ public megawalls() {
+ return message;
}
@SubCommand({ description: (t) => t("commands.historical-murdermystery"), args })
- public murdermystery(context: CommandContext) {
- return this.run(context, MURDER_MYSTERY_MODES, (base, mode) => (
-
- ));
+ public murdermystery() {
+ return message;
}
@SubCommand({
@@ -181,16 +102,16 @@ export class HistoricalBase {
args,
group: "classic",
})
- public paintball(context: CommandContext) {
- return this.run(context, PAINTBALL_MODES, (base) => );
+ public paintball() {
+ return message;
}
@SubCommand({
description: (t) => t("commands.historical-pit"),
args,
})
- public pit(context: CommandContext) {
- return this.run(context, PIT_MODES, (base) => );
+ public pit() {
+ return message;
}
@SubCommand({
@@ -198,36 +119,28 @@ export class HistoricalBase {
args,
group: "classic",
})
- public quake(context: CommandContext) {
- return this.run(context, QUAKE_MODES, (base, mode) => (
-
- ));
+ public quake() {
+ return message;
}
@SubCommand({ description: (t) => t("commands.historical-skywars"), args })
- public skywars(context: CommandContext) {
- return this.run(context, SKYWARS_MODES, (base, mode) => (
-
- ));
+ public skywars() {
+ return message;
}
@SubCommand({ description: (t) => t("commands.historical-smashheroes"), args })
- public smashheroes(context: CommandContext) {
- return this.run(context, SMASH_HEROES_MODES, (base, mode) => (
-
- ));
+ public smashheroes() {
+ return message;
}
@SubCommand({ description: (t) => t("commands.historical-speeduhc"), args })
- public speeduhc(context: CommandContext) {
- return this.run(context, SPEED_UHC_MODES, (base, mode) => (
-
- ));
+ public speeduhc() {
+ return message;
}
@SubCommand({ description: (t) => t("commands.historical-tntgames"), args })
- public tntgames(context: CommandContext) {
- return this.run(context, TNT_GAMES_MODES, (base) => );
+ public tntgames() {
+ return message;
}
@SubCommand({
@@ -235,17 +148,13 @@ export class HistoricalBase {
args,
group: "classic",
})
- public turbokartracers(context: CommandContext) {
- return this.run(context, TURBO_KART_RACERS_MODES, (base) => (
-
- ));
+ public turbokartracers() {
+ return message;
}
@SubCommand({ description: (t) => t("commands.historical-uhc"), args })
- public uhc(context: CommandContext) {
- return this.run(context, UHC_MODES, (base, mode) => (
-
- ));
+ public uhc() {
+ return message;
}
@SubCommand({
@@ -253,10 +162,8 @@ export class HistoricalBase {
args,
group: "classic",
})
- public vampirez(context: CommandContext) {
- return this.run(context, VAMPIREZ_MODES, (base, mode) => (
-
- ));
+ public vampirez() {
+ return message;
}
@SubCommand({
@@ -264,42 +171,17 @@ export class HistoricalBase {
args,
group: "classic",
})
- public walls(context: CommandContext) {
- return this.run(context, WALLS_MODES, (base) => );
+ public walls() {
+ return message;
}
@SubCommand({ description: (t) => t("commands.historical-warlords"), args })
- public warlords(context: CommandContext) {
- return this.run(context, WARLORDS_MODES, (base, mode) => (
-
- ));
- }
-
- @SubCommand({ description: (t) => t("commands.historical-woolwars"), args })
- public woolwars(context: CommandContext) {
- return this.run(context, WOOLWARS_MODES, (base, mode) => (
-
- ));
+ public warlords() {
+ return message;
}
- protected run(
- _context: CommandContext,
- _modes: GameModes,
- _getProfile: (base: BaseProfileProps, mode: GameMode) => JSX.Element,
- _filterModes?: (player: Player, modes: GameMode[]) => GameMode[]
- ): IMessage {
- const preview = {
- name: "preview.png",
- data: readFileSync(getAssetPath("previews/session.png")),
- type: "image/png",
- };
-
- const embed = new EmbedBuilder()
- .color(STATUS_COLORS.info)
- .title((t) => t("historical.disabledWarning.title"))
- .description((t) => t("historical.disabledWarning.description"))
- .image(`attachment://${preview.name}`);
-
- return { embeds: [embed], files: [preview] };
+ @SubCommand({ description: (t) => t("commands.historical-woolgames"), args })
+ public woolgames() {
+ return message;
}
}
diff --git a/apps/discord-bot/src/commands/historical/session.command.tsx b/apps/discord-bot/src/commands/historical/session.command.tsx
index d5e0f8b76..75f92aa49 100644
--- a/apps/discord-bot/src/commands/historical/session.command.tsx
+++ b/apps/discord-bot/src/commands/historical/session.command.tsx
@@ -17,6 +17,7 @@ import {
DUELS_MODES,
GENERAL_MODES,
GameMode,
+ GameModeWithSubModes,
GameModes,
MEGAWALLS_MODES,
MURDER_MYSTERY_MODES,
@@ -33,7 +34,7 @@ import {
VAMPIREZ_MODES,
WALLS_MODES,
WARLORDS_MODES,
- WOOLWARS_MODES,
+ WOOLGAMES_MODES,
} from "@statsify/schemas";
import {
ApiService,
@@ -43,6 +44,7 @@ import {
PaginateService,
PlayerArgument,
SubCommand,
+ SubPage,
} from "@statsify/discord";
import { ArcadeProfile } from "../arcade/arcade.profile.js";
import { ArenaBrawlProfile } from "../arenabrawl/arenabrawl.profile.js";
@@ -70,7 +72,7 @@ import { UHCProfile } from "../uhc/uhc.profile.js";
import { VampireZProfile } from "../vampirez/vampirez.profile.js";
import { WallsProfile } from "../walls/walls.profile.js";
import { WarlordsProfile } from "../warlords/warlords.profile.js";
-import { WoolWarsProfile } from "../woolwars/woolwars.profile.js";
+import { WoolGamesProfile } from "../woolgames/woolgames.profile.js";
import { getBackground, getLogo } from "@statsify/assets";
import { getTheme } from "#themes";
import { render } from "@statsify/rendering";
@@ -266,10 +268,10 @@ export class SessionCommand {
));
}
- @SubCommand({ description: (t) => t("commands.session-woolwars"), args: [PlayerArgument] })
- public woolwars(context: CommandContext) {
- return this.run(context, WOOLWARS_MODES, (base, mode) => (
-
+ @SubCommand({ description: (t) => t("commands.session-woolgames"), args: [PlayerArgument] })
+ public woolgames(context: CommandContext) {
+ return this.run(context, WOOLGAMES_MODES, (base, mode) => (
+
));
}
@@ -277,7 +279,7 @@ export class SessionCommand {
context: CommandContext,
modes: GameModes,
getProfile: (base: BaseProfileProps, mode: GameMode) => JSX.Element,
- filterModes?: (player: Player, modes: GameMode[]) => GameMode[]
+ filterModes?: (player: Player, modes: GameModeWithSubModes[]) => GameModeWithSubModes[]
) {
const user = context.getUser();
@@ -296,50 +298,88 @@ export class SessionCommand {
const allModes = modes.getModes();
const displayedModes = filterModes ? filterModes(player, allModes) : allModes;
- const pages: Page[] = displayedModes.map((mode) => ({
- label: mode.formatted,
- generator: async (t) => {
- const background = await getBackground(...mapBackground(modes, mode.api));
-
- const displayName = this.apiService.emojiDisplayName(t, player.displayName);
-
- let content: string | undefined = undefined;
-
- if (player.isNew) {
- content = t("historical.newSession", { displayName });
- } else if (Math.random() < 0.1) {
- content = t("tips.resetSession");
- }
-
- const profile = getProfile(
- {
- player,
- skin,
- background,
- logo,
- t,
- user,
- badge,
- time: {
- timeType: HistoricalTimes.SESSION,
- sessionReset: player.sessionReset ?
- DateTime.fromSeconds(player.sessionReset) :
- DateTime.now(),
+ const pages: Page[] = displayedModes.map((mode) => {
+ if (mode.submodes.length === 0) return {
+ label: mode.formatted,
+ generator: async (t) => {
+ const background = await getBackground(...mapBackground(modes, mode.api));
+
+ const displayName = this.apiService.emojiDisplayName(t, player.displayName);
+
+ let content: string | undefined = undefined;
+
+ if (player.isNew) {
+ content = t("historical.newSession", { displayName });
+ } else if (Math.random() < 0.1) {
+ content = t("tips.resetSession");
+ }
+
+ const profile = getProfile(
+ {
+ player,
+ skin,
+ background,
+ logo,
+ t,
+ user,
+ badge,
+ time: {
+ timeType: HistoricalTimes.SESSION,
+ sessionReset: player.sessionReset ?
+ DateTime.fromSeconds(player.sessionReset) :
+ DateTime.now(),
+ },
},
- },
- mode
- );
-
- const canvas = render(profile, getTheme(user));
- const buffer = await canvas.toBuffer("png");
-
- return {
- content,
- files: [{ name: "session.png", data: buffer, type: "image/png" }],
- attachments: [],
- };
- },
- }));
+ { ...mode, submode: undefined } as unknown as GameMode
+ );
+
+ const canvas = render(profile, getTheme(user));
+ const buffer = await canvas.toBuffer("png");
+
+ return {
+ content,
+ files: [{ name: "session.png", data: buffer, type: "image/png" }],
+ attachments: [],
+ };
+ },
+ };
+
+ const subPages = mode.submodes.map((submode): SubPage => ({
+ label: submode.formatted,
+ generator: async (t) => {
+ const background = await getBackground(...mapBackground(modes, mode.api));
+
+ const profile = getProfile(
+ {
+ player,
+ skin,
+ background,
+ logo,
+ t,
+ user,
+ badge,
+ time: {
+ timeType: HistoricalTimes.SESSION,
+ sessionReset: player.sessionReset ?
+ DateTime.fromSeconds(player.sessionReset) :
+ DateTime.now(),
+ },
+ },
+ { api: mode.api, formatted: mode.formatted, hypixel: mode.hypixel, submode } as GameMode
+ );
+
+ const canvas = render(profile, getTheme(user));
+ const buffer = await canvas.toBuffer("png");
+
+ return {
+ files: [{ name: "session.png", data: buffer, type: "image/png" }],
+ attachments: [],
+ };
+ },
+ }));
+
+ return { label: mode.formatted, subPages };
+ });
return this.paginateService.paginate(context, pages);
}
diff --git a/apps/discord-bot/src/commands/leaderboards/player-leaderboard.command.ts b/apps/discord-bot/src/commands/leaderboards/player-leaderboard.command.ts
index 8f0225a0d..1a9159e80 100644
--- a/apps/discord-bot/src/commands/leaderboards/player-leaderboard.command.ts
+++ b/apps/discord-bot/src/commands/leaderboards/player-leaderboard.command.ts
@@ -34,7 +34,7 @@ import {
VAMPIREZ_MODES,
WALLS_MODES,
WARLORDS_MODES,
- WOOLWARS_MODES,
+ WOOLGAMES_MODES,
} from "@statsify/schemas";
import {
ApiService,
@@ -268,11 +268,11 @@ export class PlayerLeaderboardCommand extends BaseLeaderboardCommand {
}
@SubCommand({
- description: (t) => t("commands.leaderboard-woolwars"),
- args: [new PlayerLeaderboardArgument("woolwars")],
+ description: (t) => t("commands.leaderboard-woolgames"),
+ args: [new PlayerLeaderboardArgument("woolgames")],
})
- public woolwars(context: CommandContext) {
- return this.run(context, "woolwars", WOOLWARS_MODES);
+ public woolgames(context: CommandContext) {
+ return this.run(context, "woolgames", WOOLGAMES_MODES);
}
@SubCommand({
@@ -293,7 +293,7 @@ export class PlayerLeaderboardCommand extends BaseLeaderboardCommand {
const field = `stats.${prefix}.${leaderboard.replaceAll(" ", ".")}`;
const background = await getBackground(
- ...mapBackground(modes, modes.getModes()[0].api)
+ ...mapBackground(modes, modes.getApiModes()[0])
);
const getLeaderboard = this.apiService.getPlayerLeaderboard.bind(this.apiService);
diff --git a/apps/discord-bot/src/commands/megawalls/megawalls.command.tsx b/apps/discord-bot/src/commands/megawalls/megawalls.command.tsx
index f30589015..52f39e02d 100644
--- a/apps/discord-bot/src/commands/megawalls/megawalls.command.tsx
+++ b/apps/discord-bot/src/commands/megawalls/megawalls.command.tsx
@@ -12,7 +12,7 @@ import {
ProfileData,
} from "#commands/base.hypixel-command";
import { Command } from "@statsify/discord";
-import { GameMode, MEGAWALLS_MODES, MegaWallsModes, Player } from "@statsify/schemas";
+import { GameModeWithSubModes, MEGAWALLS_MODES, MegaWallsModes, Player } from "@statsify/schemas";
import { MegaWallsProfile, filterMegaWallsKits } from "./megawalls.profile.js";
@Command({ description: (t) => t("commands.megawalls") })
@@ -23,8 +23,8 @@ export class MegaWallsCommand extends BaseHypixelCommand {
public filterModes(
player: Player,
- modes: GameMode[]
- ): GameMode[] {
+ modes: GameModeWithSubModes[]
+ ): GameModeWithSubModes[] {
return filterMegaWallsKits(player, modes);
}
diff --git a/apps/discord-bot/src/commands/megawalls/megawalls.profile.tsx b/apps/discord-bot/src/commands/megawalls/megawalls.profile.tsx
index c39c765a5..d882f9d0f 100644
--- a/apps/discord-bot/src/commands/megawalls/megawalls.profile.tsx
+++ b/apps/discord-bot/src/commands/megawalls/megawalls.profile.tsx
@@ -7,7 +7,7 @@
*/
import { Container, Footer, Header, SidebarItem, Table } from "#components";
-import { FormattedGame, GameMode, MegaWallsModes, Player } from "@statsify/schemas";
+import { FormattedGame, type GameMode, type GameModeWithSubModes, MegaWallsModes, Player } from "@statsify/schemas";
import { formatTime, prettify } from "@statsify/util";
import type { BaseProfileProps } from "#commands/base.hypixel-command";
@@ -101,8 +101,8 @@ export const MegaWallsProfile = ({
export function filterMegaWallsKits(
player: Player,
- modes: GameMode[]
-): GameMode[] {
+ modes: GameModeWithSubModes[]
+): GameModeWithSubModes[] {
const { megawalls } = player.stats;
const [overall, ...kits] = modes;
diff --git a/apps/discord-bot/src/commands/murdermystery/murdermystery.profile.tsx b/apps/discord-bot/src/commands/murdermystery/murdermystery.profile.tsx
index 43e3f199d..28b8f06bc 100644
--- a/apps/discord-bot/src/commands/murdermystery/murdermystery.profile.tsx
+++ b/apps/discord-bot/src/commands/murdermystery/murdermystery.profile.tsx
@@ -7,7 +7,7 @@
*/
import { Container, Footer, Header, Historical, SidebarItem, Table } from "#components";
-import { FormattedGame, GameMode, MurderMysteryModes } from "@statsify/schemas";
+import { FormattedGame, type GameMode, MurderMysteryModes } from "@statsify/schemas";
import { formatTime } from "@statsify/util";
import type { BaseProfileProps } from "#commands/base.hypixel-command";
diff --git a/apps/discord-bot/src/commands/quake/quake.profile.tsx b/apps/discord-bot/src/commands/quake/quake.profile.tsx
index 16a79ada7..b47eca731 100644
--- a/apps/discord-bot/src/commands/quake/quake.profile.tsx
+++ b/apps/discord-bot/src/commands/quake/quake.profile.tsx
@@ -14,7 +14,7 @@ import {
Table,
formatProgression,
} from "#components";
-import { FormattedGame, GameMode, QuakeModes } from "@statsify/schemas";
+import { FormattedGame, type GameMode, QuakeModes } from "@statsify/schemas";
import type { BaseProfileProps } from "#commands/base.hypixel-command";
export interface QuakeProfileProps extends BaseProfileProps {
diff --git a/apps/discord-bot/src/commands/quests/quests.command.tsx b/apps/discord-bot/src/commands/quests/quests.command.tsx
index 87b96d3b9..01c484c6a 100644
--- a/apps/discord-bot/src/commands/quests/quests.command.tsx
+++ b/apps/discord-bot/src/commands/quests/quests.command.tsx
@@ -88,7 +88,7 @@ export class QuestsCommand {
user,
badge,
time,
- mode,
+ mode: { ...mode, submode: undefined },
gameIcons,
logos: [crossLogo, verifiedLogo],
});
diff --git a/apps/discord-bot/src/commands/quests/quests.profile.tsx b/apps/discord-bot/src/commands/quests/quests.profile.tsx
index 515485361..2e33dfd09 100644
--- a/apps/discord-bot/src/commands/quests/quests.profile.tsx
+++ b/apps/discord-bot/src/commands/quests/quests.profile.tsx
@@ -11,8 +11,8 @@ import {
ClassMetadata,
DailyQuests,
FormattedGame,
- GameId,
- GameMode,
+ type GameId,
+ type GameMode,
GameQuests,
GenericQuestInstance,
METADATA_KEY,
@@ -62,7 +62,7 @@ const questMetadata = [DailyQuests, WeeklyQuests, OverallQuests].map((constructo
export interface QuestProfileProps extends Omit {
mode: GameMode;
gameIcons: Record;
- logos: [check: Image, cross: Image];
+ logos: [cross: Image, check: Image];
time: QuestTime;
}
@@ -136,10 +136,10 @@ interface GameTableProps {
t: LocalizeFunction;
time: QuestTime;
game: keyof typeof FormattedGame;
- logos: [Image, Image];
+ logos: [cross: Image, check: Image];
}
-const GameTable = ({ quests, t, game, time, logos }: GameTableProps) => {
+const GameTable = ({ quests, t, game, time, logos: [cross, check] }: GameTableProps) => {
const isOverall = time === QuestTime.Overall;
const entries = Object.entries(quests)
@@ -156,7 +156,7 @@ const GameTable = ({ quests, t, game, time, logos }: GameTableProps) => {
{isOverall ?
{t(completions)} :
- }
+ }
);
});
diff --git a/apps/discord-bot/src/commands/rankings/rankings.command.tsx b/apps/discord-bot/src/commands/rankings/rankings.command.tsx
index dcec60feb..60cc34204 100644
--- a/apps/discord-bot/src/commands/rankings/rankings.command.tsx
+++ b/apps/discord-bot/src/commands/rankings/rankings.command.tsx
@@ -37,7 +37,7 @@ import {
VAMPIREZ_MODES,
WALLS_MODES,
WARLORDS_MODES,
- WOOLWARS_MODES,
+ WOOLGAMES_MODES,
} from "@statsify/schemas";
import {
ApiService,
@@ -298,10 +298,10 @@ export class RankingsCommand {
@SubCommand({
...options,
- description: (t) => t("commands.rankings-woolwars"),
+ description: (t) => t("commands.rankings-woolgames"),
})
- public woolwars(context: CommandContext) {
- return this.run(context, "woolwars", WOOLWARS_MODES);
+ public woolgames(context: CommandContext) {
+ return this.run(context, "woolgames", WOOLGAMES_MODES);
}
private async run(
diff --git a/apps/discord-bot/src/commands/ratios/ratios.command.tsx b/apps/discord-bot/src/commands/ratios/ratios.command.tsx
index e5d3536fd..43bb2a4fb 100644
--- a/apps/discord-bot/src/commands/ratios/ratios.command.tsx
+++ b/apps/discord-bot/src/commands/ratios/ratios.command.tsx
@@ -14,8 +14,8 @@ import {
BlitzSGKit,
COPS_AND_CRIMS_MODES,
DUELS_MODES,
- GameMode,
- GameModes,
+ type GameModeWithSubModes,
+ type GameModes,
LEADERBOARD_RATIOS,
MEGAWALLS_MODES,
MURDER_MYSTERY_MODES,
@@ -31,7 +31,7 @@ import {
VAMPIREZ_MODES,
WALLS_MODES,
WARLORDS_MODES,
- WOOLWARS_MODES,
+ WOOLGAMES_MODES,
} from "@statsify/schemas";
import {
ApiService,
@@ -42,6 +42,7 @@ import {
PlayerArgument,
SubCommand,
} from "@statsify/discord";
+import { Constructor, prettify } from "@statsify/util";
import {
GamesWithBackgrounds,
MODES_TO_API,
@@ -51,7 +52,6 @@ import {
import { RatiosProfile, RatiosProfileProps } from "./ratios.profile.js";
import { getBackground, getLogo } from "@statsify/assets";
import { getTheme } from "#themes";
-import { prettify } from "@statsify/util";
import { render } from "@statsify/rendering";
const args = [PlayerArgument];
@@ -172,15 +172,15 @@ export class RatiosCommand {
return this.run(context, WARLORDS_MODES);
}
- @SubCommand({ description: (t) => t("commands.ratios-woolwars"), args })
- public woolwars(context: CommandContext) {
- return this.run(context, WOOLWARS_MODES);
+ @SubCommand({ description: (t) => t("commands.ratios-woolgames"), args })
+ public woolgames(context: CommandContext) {
+ return this.run(context, WOOLGAMES_MODES);
}
private async run(
context: CommandContext,
modes: GameModes,
- filterModes?: (player: Player, modes: GameMode[]) => GameMode[]
+ filterModes?: (player: Player, modes: GameModeWithSubModes[]) => GameModeWithSubModes[]
) {
const user = context.getUser();
const player = await this.apiService.getPlayer(context.option("player"), user);
@@ -218,7 +218,7 @@ export class RatiosCommand {
t,
user,
badge,
- mode,
+ mode: { ...mode, submode: mode.submodes.length === 0 ? undefined : mode.submodes[0] },
gameName: MODES_TO_FORMATTED.get(modes)!,
ratios: ratios.map((r) => [
stats[r[0] as keyof typeof stats],
@@ -241,7 +241,13 @@ export class RatiosCommand {
return this.paginateService.paginate(context, pages);
}
- private getModeStats(game: PlayerStats[keyof PlayerStats], mode: GameMode) {
+ private getModeStats(game: PlayerStats[keyof PlayerStats], mode: GameModeWithSubModes) {
+ if (mode.submodes.length !== 0) {
+ let stats = game[mode.api as keyof typeof game];
+ stats = stats[mode.submodes[0].api as keyof typeof game];
+ return mode.submodes[0].api === "overall" ? stats || game : stats;
+ }
+
const stats = game[mode.api as keyof typeof game];
return mode.api === "overall" ? stats || game : stats;
}
@@ -252,18 +258,15 @@ export class RatiosCommand {
) {
const gameClass = Reflect.getMetadata("design:type", PlayerStats.prototype, key);
- const ratioModes: [mode: GameMode, ratios: Ratio[]][] = [];
+ const ratioModes: [mode: GameModeWithSubModes, ratios: Ratio[]][] = [];
const gameModes = modes.getModes();
for (const mode of gameModes) {
if (!mode.api) continue;
- const modeClass =
- mode.api === "overall" ?
- Reflect.getMetadata("design:type", gameClass.prototype, mode.api) || gameClass :
- Reflect.getMetadata("design:type", gameClass.prototype, mode.api);
-
+ const modeClass = this.getModeClass(mode, gameClass);
if (!modeClass) continue;
+
const ratios = LEADERBOARD_RATIOS.filter(([numerator, denominator]) => {
const numeratorType = Reflect.getMetadata(
"design:type",
@@ -287,4 +290,16 @@ export class RatiosCommand {
return ratioModes;
}
+
+ private getModeClass(mode: GameModeWithSubModes, gameClass: Constructor) {
+ const apiType = Reflect.getMetadata("design:type", gameClass.prototype, mode.api);
+ const modeType = mode.api === "overall" ? apiType || gameClass : apiType;
+
+ if (mode.submodes.length === 0) return modeType;
+
+ // @ts-expect-error TypeScript doesn't realize that an api field will always be present when submodes is not empty
+ const submode = mode.submodes[0].api as string;
+ const submodeType = Reflect.getMetadata("design:type", modeType.prototype, submode);
+ return submode === "overall" ? submodeType || modeType : submodeType;
+ }
}
diff --git a/apps/discord-bot/src/commands/ratios/ratios.profile.tsx b/apps/discord-bot/src/commands/ratios/ratios.profile.tsx
index aac7c6177..a66ddb67f 100644
--- a/apps/discord-bot/src/commands/ratios/ratios.profile.tsx
+++ b/apps/discord-bot/src/commands/ratios/ratios.profile.tsx
@@ -7,7 +7,7 @@
*/
import { Container, Footer, Header, List, Table } from "#components";
-import { FormattedGame, GameMode } from "@statsify/schemas";
+import { FormattedGame, type GameMode } from "@statsify/schemas";
import { LocalizeFunction } from "@statsify/discord";
import { ratio } from "@statsify/math";
import type { BaseProfileProps } from "#commands/base.hypixel-command";
diff --git a/apps/discord-bot/src/commands/skywars/skywars-challenges.command.tsx b/apps/discord-bot/src/commands/skywars/skywars-challenges.command.tsx
index 77ba976ed..b556197b8 100644
--- a/apps/discord-bot/src/commands/skywars/skywars-challenges.command.tsx
+++ b/apps/discord-bot/src/commands/skywars/skywars-challenges.command.tsx
@@ -8,7 +8,7 @@
import { BaseHypixelCommand, BaseProfileProps } from "#commands/base.hypixel-command";
import { Command } from "@statsify/discord";
-import { GameMode, Player, SKYWARS_MODES, SkyWarsModes } from "@statsify/schemas";
+import { type GameModeWithSubModes, Player, SKYWARS_MODES, SkyWarsModes } from "@statsify/schemas";
import { SkyWarsChallengesProfile } from "./skywars-challenges.profile.js";
@Command({ description: (t) => t("commands.skywars-challenges") })
@@ -19,8 +19,8 @@ export class SkyWarsChallengesCommand extends BaseHypixelCommand {
public filterModes(
player: Player,
- modes: GameMode[]
- ): GameMode[] {
+ modes: GameModeWithSubModes[]
+ ): GameModeWithSubModes[] {
return [modes[0]];
}
diff --git a/apps/discord-bot/src/commands/skywars/skywars.profile.tsx b/apps/discord-bot/src/commands/skywars/skywars.profile.tsx
index c82a2f7a8..0988d162e 100644
--- a/apps/discord-bot/src/commands/skywars/skywars.profile.tsx
+++ b/apps/discord-bot/src/commands/skywars/skywars.profile.tsx
@@ -15,7 +15,7 @@ import {
Table,
formatProgression,
} from "#components";
-import { FormattedGame, GameMode, SkyWarsModes } from "@statsify/schemas";
+import { FormattedGame, type GameMode, SkyWarsModes } from "@statsify/schemas";
import { formatTime, prettify } from "@statsify/util";
import type { BaseProfileProps } from "#commands/base.hypixel-command";
diff --git a/apps/discord-bot/src/commands/smashheroes/smashheroes.profile.tsx b/apps/discord-bot/src/commands/smashheroes/smashheroes.profile.tsx
index 1f0797dfc..d119a058f 100644
--- a/apps/discord-bot/src/commands/smashheroes/smashheroes.profile.tsx
+++ b/apps/discord-bot/src/commands/smashheroes/smashheroes.profile.tsx
@@ -7,7 +7,7 @@
*/
import { Container, Footer, Header, SidebarItem, Table } from "#components";
-import { FormattedGame, GameMode, SmashHeroesModes } from "@statsify/schemas";
+import { FormattedGame, type GameMode, SmashHeroesModes } from "@statsify/schemas";
import { prettify } from "@statsify/util";
import type { BaseProfileProps } from "#commands/base.hypixel-command";
diff --git a/apps/discord-bot/src/commands/speeduhc/speeduhc.profile.tsx b/apps/discord-bot/src/commands/speeduhc/speeduhc.profile.tsx
index c588985f7..56400dd49 100644
--- a/apps/discord-bot/src/commands/speeduhc/speeduhc.profile.tsx
+++ b/apps/discord-bot/src/commands/speeduhc/speeduhc.profile.tsx
@@ -15,7 +15,7 @@ import {
Table,
formatProgression,
} from "#components";
-import { FormattedGame, GameMode, SpeedUHCMode, SpeedUHCModes } from "@statsify/schemas";
+import { FormattedGame, type GameMode, SpeedUHCMode, SpeedUHCModes } from "@statsify/schemas";
import { prettify } from "@statsify/util";
import type { BaseProfileProps } from "#commands/base.hypixel-command";
diff --git a/apps/discord-bot/src/commands/uhc/uhc.profile.tsx b/apps/discord-bot/src/commands/uhc/uhc.profile.tsx
index 47e272ce8..44d67481d 100644
--- a/apps/discord-bot/src/commands/uhc/uhc.profile.tsx
+++ b/apps/discord-bot/src/commands/uhc/uhc.profile.tsx
@@ -14,7 +14,7 @@ import {
Table,
formatProgression,
} from "#components";
-import { FormattedGame, GameMode, UHCModes } from "@statsify/schemas";
+import { FormattedGame, type GameMode, UHCModes } from "@statsify/schemas";
import { prettify } from "@statsify/util";
import type { BaseProfileProps } from "#commands/base.hypixel-command";
diff --git a/apps/discord-bot/src/commands/vampirez/vampirez.profile.tsx b/apps/discord-bot/src/commands/vampirez/vampirez.profile.tsx
index 8fcdc3855..a22e8d699 100644
--- a/apps/discord-bot/src/commands/vampirez/vampirez.profile.tsx
+++ b/apps/discord-bot/src/commands/vampirez/vampirez.profile.tsx
@@ -14,7 +14,7 @@ import {
Table,
formatProgression,
} from "#components";
-import { FormattedGame, GameMode, VampireZModes } from "@statsify/schemas";
+import { FormattedGame, type GameMode, VampireZModes } from "@statsify/schemas";
import type { BaseProfileProps } from "#commands/base.hypixel-command";
export interface VampireZProfileProps extends BaseProfileProps {
diff --git a/apps/discord-bot/src/commands/warlords/warlords.profile.tsx b/apps/discord-bot/src/commands/warlords/warlords.profile.tsx
index 40ec3e1b5..3d131e39e 100644
--- a/apps/discord-bot/src/commands/warlords/warlords.profile.tsx
+++ b/apps/discord-bot/src/commands/warlords/warlords.profile.tsx
@@ -7,7 +7,7 @@
*/
import { Container, Footer, Header, SidebarItem, Table } from "#components";
-import { FormattedGame, GameMode, WarlordsModes } from "@statsify/schemas";
+import { FormattedGame, type GameMode, WarlordsModes } from "@statsify/schemas";
import { WarlordsClassTable } from "./tables/index.js";
import { prettify } from "@statsify/util";
import type { BaseProfileProps } from "#commands/base.hypixel-command";
diff --git a/apps/discord-bot/src/commands/woolgames/capture-the-wool.table.tsx b/apps/discord-bot/src/commands/woolgames/capture-the-wool.table.tsx
new file mode 100644
index 000000000..3514b8815
--- /dev/null
+++ b/apps/discord-bot/src/commands/woolgames/capture-the-wool.table.tsx
@@ -0,0 +1,93 @@
+/**
+ * Copyright (c) Statsify
+ *
+ * This source code is licensed under the GNU GPL v3 license found in the
+ * LICENSE file in the root directory of this source tree.
+ * https://github.com/Statsify/statsify/blob/main/LICENSE
+ */
+
+import { Historical, If, Table } from "#components";
+import { formatTime } from "@statsify/util";
+import type { CaptureTheWool } from "@statsify/schemas";
+import type { LocalizeFunction } from "@statsify/discord";
+import type { ProfileTime } from "#commands/base.hypixel-command";
+
+interface CaptureTheWoolTableProps {
+ captureTheWool: CaptureTheWool;
+ t: LocalizeFunction;
+ time: ProfileTime;
+}
+
+export const CaptureTheWoolTable = ({ captureTheWool, t, time }: CaptureTheWoolTableProps) => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0}>
+
+
+ 0}>
+
+
+ 0}>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+);
diff --git a/apps/discord-bot/src/commands/woolgames/sheepwars.table.tsx b/apps/discord-bot/src/commands/woolgames/sheepwars.table.tsx
new file mode 100644
index 000000000..d2171719a
--- /dev/null
+++ b/apps/discord-bot/src/commands/woolgames/sheepwars.table.tsx
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) Statsify
+ *
+ * This source code is licensed under the GNU GPL v3 license found in the
+ * LICENSE file in the root directory of this source tree.
+ * https://github.com/Statsify/statsify/blob/main/LICENSE
+ */
+
+import { Table } from "#components";
+import { prettify } from "@statsify/util";
+import type { LocalizeFunction } from "@statsify/discord";
+import type { SheepWars } from "@statsify/schemas";
+
+export interface SheepWarsTableProps {
+ sheepwars: SheepWars;
+ t: LocalizeFunction;
+}
+
+export const SheepWarsTable = ({ sheepwars, t }: SheepWarsTableProps) => {
+ const stats = sheepwars;
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
diff --git a/apps/discord-bot/src/commands/woolwars/woolwars.command.tsx b/apps/discord-bot/src/commands/woolgames/woolgames.command.tsx
similarity index 55%
rename from apps/discord-bot/src/commands/woolwars/woolwars.command.tsx
rename to apps/discord-bot/src/commands/woolgames/woolgames.command.tsx
index 72f11c538..dd02a1ae7 100644
--- a/apps/discord-bot/src/commands/woolwars/woolwars.command.tsx
+++ b/apps/discord-bot/src/commands/woolgames/woolgames.command.tsx
@@ -12,19 +12,19 @@ import {
ProfileData,
} from "#commands/base.hypixel-command";
import { Command } from "@statsify/discord";
-import { WOOLWARS_MODES, WoolWarsModes } from "@statsify/schemas";
-import { WoolWarsProfile } from "./woolwars.profile.js";
+import { WOOLGAMES_MODES, WoolGamesModes } from "@statsify/schemas";
+import { WoolGamesProfile } from "./woolgames.profile.js";
-@Command({ description: (t) => t("commands.woolwars") })
-export class WoolWarsCommand extends BaseHypixelCommand {
+@Command({ description: (t) => t("commands.woolgames") })
+export class WoolGamesCommand extends BaseHypixelCommand {
public constructor() {
- super(WOOLWARS_MODES);
+ super(WOOLGAMES_MODES);
}
public getProfile(
base: BaseProfileProps,
- { mode }: ProfileData
+ { mode }: ProfileData
): JSX.Element {
- return ;
+ return ;
}
}
diff --git a/apps/discord-bot/src/commands/woolgames/woolgames.profile.tsx b/apps/discord-bot/src/commands/woolgames/woolgames.profile.tsx
new file mode 100644
index 000000000..1cc74fd3e
--- /dev/null
+++ b/apps/discord-bot/src/commands/woolgames/woolgames.profile.tsx
@@ -0,0 +1,115 @@
+/**
+ * Copyright (c) Statsify
+ *
+ * This source code is licensed under the GNU GPL v3 license found in the
+ * LICENSE file in the root directory of this source tree.
+ * https://github.com/Statsify/statsify/blob/main/LICENSE
+ */
+
+import { CaptureTheWoolTable } from "./capture-the-wool.table.js";
+import {
+ Container,
+ Footer,
+ Header,
+ Historical,
+ SidebarItem,
+ Table,
+ formatProgression,
+} from "#components";
+import {
+ FormattedGame,
+ type GameMode,
+ WoolGamesModes,
+} from "@statsify/schemas";
+import { SheepWarsTable } from "./sheepwars.table.js";
+import { WoolWarsTable } from "./woolwars.table.js";
+import { formatTime } from "@statsify/util";
+import type { BaseProfileProps } from "#commands/base.hypixel-command";
+
+export interface WoolGamesProfileProps extends BaseProfileProps {
+ mode: GameMode;
+}
+
+export const WoolGamesProfile = ({
+ skin,
+ player,
+ background,
+ logo,
+ user,
+ badge,
+ mode,
+ t,
+ time,
+}: WoolGamesProfileProps) => {
+ const { woolgames } = player.stats;
+
+ const sidebar: SidebarItem[] = [
+ [t("stats.wool"), t(woolgames.coins), "§6"],
+ [t("stats.layers"), `${t(woolgames.layers)}§8/§a${t(100)}`, "§a"],
+ [t("stats.playtime"), formatTime(woolgames.playtime), "§d"],
+ ];
+
+ let table;
+
+ switch (mode.api) {
+ case "woolwars":
+ table = ;
+ sidebar.push(
+ [t("stats.woolPlaced"), t(woolgames.woolwars.overall.woolPlaced), "§e"],
+ [t("stats.blocksBroken"), t(woolgames.woolwars.overall.blocksBroken), "§c"],
+ [t("stats.powerups"), t(woolgames.woolwars.overall.powerups), "§b"]
+ );
+ break;
+
+ case "captureTheWool":
+ table = ;
+ sidebar.push(
+ [t("stats.goldEarned"), t(woolgames.captureTheWool.goldEarned), "§6"],
+ [t("stats.goldSpent"), t(woolgames.captureTheWool.goldSpent), "§6"]
+ );
+ break;
+
+ case "sheepwars":
+ table = ;
+ sidebar.push(
+ [t("stats.magicWool"), t(woolgames.sheepwars.magicWool), "§5"],
+ [t("stats.sheepThrown"), t(woolgames.sheepwars.sheepThrown), "§c"]
+ );
+ break;
+ }
+
+ return (
+
+
+
+ {table}
+
+
+
+
+ );
+};
diff --git a/apps/discord-bot/src/commands/woolgames/woolwars.table.tsx b/apps/discord-bot/src/commands/woolgames/woolwars.table.tsx
new file mode 100644
index 000000000..053f18f68
--- /dev/null
+++ b/apps/discord-bot/src/commands/woolgames/woolwars.table.tsx
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) Statsify
+ *
+ * This source code is licensed under the GNU GPL v3 license found in the
+ * LICENSE file in the root directory of this source tree.
+ * https://github.com/Statsify/statsify/blob/main/LICENSE
+ */
+
+import { If, Table } from "#components";
+import type { LocalizeFunction } from "@statsify/discord";
+import type { SubModesForMode, WoolGamesModes, WoolWars } from "@statsify/schemas";
+
+export interface WoolWarsTableProps {
+ woolwars: WoolWars;
+ submode: SubModesForMode;
+ t: LocalizeFunction;
+}
+
+export const WoolWarsTable = ({ woolwars, submode, t }: WoolWarsTableProps) => {
+ const stats = woolwars.overall;
+
+ return (
+ <>
+
+ {() => (
+
+
+
+
+
+ )}
+
+
+
+
+
+
+
+ >
+ );
+};
diff --git a/apps/discord-bot/src/commands/woolwars/woolwars.profile.tsx b/apps/discord-bot/src/commands/woolwars/woolwars.profile.tsx
deleted file mode 100644
index 05315ea10..000000000
--- a/apps/discord-bot/src/commands/woolwars/woolwars.profile.tsx
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * Copyright (c) Statsify
- *
- * This source code is licensed under the GNU GPL v3 license found in the
- * LICENSE file in the root directory of this source tree.
- * https://github.com/Statsify/statsify/blob/main/LICENSE
- */
-
-import {
- Container,
- Footer,
- Header,
- Historical,
- If,
- SidebarItem,
- Table,
- formatProgression,
-} from "#components";
-import {
- FormattedGame,
- GameMode,
- WoolWarsModes,
- WoolWarsOverall,
-} from "@statsify/schemas";
-import type { BaseProfileProps } from "#commands/base.hypixel-command";
-
-export interface WoolWarsProfileProps extends BaseProfileProps {
- mode: GameMode;
-}
-
-export const WoolWarsProfile = ({
- skin,
- player,
- background,
- logo,
- user,
- badge,
- mode,
- t,
- time,
-}: WoolWarsProfileProps) => {
- const { woolwars } = player.stats;
- const stats = woolwars[mode.api];
-
- const sidebar: SidebarItem[] = [
- [t("stats.wool"), t(woolwars.coins), "§6"],
- [t("stats.layers"), `${t(woolwars.layers)}§8/§a${t(100)}`, "§a"],
- [t("stats.woolPlaced"), t(stats.woolPlaced), "§e"],
- [t("stats.blocksBroken"), t(stats.blocksBroken), "§c"],
- [t("stats.powerups"), t(stats.powerups), "§b"],
- ];
-
- return (
-
-
-
-
- {() => {
- const overall = stats as WoolWarsOverall;
- return (
-
-
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
- );
-};
diff --git a/apps/discord-bot/src/constants.ts b/apps/discord-bot/src/constants.ts
index 6893f27c4..06c5a181e 100644
--- a/apps/discord-bot/src/constants.ts
+++ b/apps/discord-bot/src/constants.ts
@@ -9,6 +9,7 @@
import {
ARCADE_MODES,
ARENA_BRAWL_MODES,
+ ApiModeFromGameModes,
ArcadeModes,
ArenaBrawlModes,
BEDWARS_MODES,
@@ -36,6 +37,7 @@ import {
MEGAWALLS_MODES,
MURDER_MYSTERY_MODES,
MegaWallsModes,
+ Mode,
MurderMysteryModes,
PAINTBALL_MODES,
PARKOUR_MODES,
@@ -66,14 +68,14 @@ import {
VampireZModes,
WALLS_MODES,
WARLORDS_MODES,
- WOOLWARS_MODES,
+ WOOLGAMES_MODES,
WallsModes,
WarlordsModes,
- WoolWarsModes,
+ WoolGamesModes,
} from "@statsify/schemas";
import { noop, prettify } from "@statsify/util";
-const getDefaultApiMode = (modes: GameModes) =>
+const getDefaultApiMode = (modes: GameModes) =>
modes.getApiModes()[0];
export type GamesWithBackgrounds =
@@ -104,13 +106,13 @@ export type GamesWithBackgrounds =
| VampireZModes
| WallsModes
| WarlordsModes
- | WoolWarsModes
+ | WoolGamesModes
| QuestModes
| ChallengeModes;
export const mapBackground = (
modes: GameModes,
- mode: T[number]
+ mode: ApiModeFromGameModes
): [game: string, mode: string] => {
switch (modes) {
case BEDWARS_MODES: {
@@ -291,8 +293,8 @@ export const mapBackground = (
case "WARLORDS":
return mapBackground(WARLORDS_MODES, getDefaultApiMode(WARLORDS_MODES));
- case "WOOLWARS":
- return mapBackground(WOOLWARS_MODES, getDefaultApiMode(WOOLWARS_MODES));
+ case "WOOLGAMES":
+ return mapBackground(WOOLGAMES_MODES, getDefaultApiMode(WOOLGAMES_MODES));
}
throw new Error(`Missing background for mode: ${mode}`);
@@ -356,8 +358,8 @@ export const mapBackground = (
case WARLORDS_MODES:
return ["warlords", "overall"];
- case WOOLWARS_MODES:
- return ["woolwars", "overall"];
+ case WOOLGAMES_MODES:
+ return ["woolgames", mode];
default:
return ["default", ""];
@@ -387,7 +389,7 @@ const GAME_ID_TO_MODES: Record | null> = {
VAMPIREZ: VAMPIREZ_MODES,
WALLS: WALLS_MODES,
WARLORDS: WARLORDS_MODES,
- WOOLWARS: WOOLWARS_MODES,
+ WOOLGAMES: WOOLGAMES_MODES,
PIT: PIT_MODES,
HOUSING: noop(),
PROTOTYPE: noop(),
@@ -427,7 +429,7 @@ export const MODES_TO_API = new Map, keyof Playe
[VAMPIREZ_MODES, "vampirez"],
[WALLS_MODES, "walls"],
[WARLORDS_MODES, "warlords"],
- [WOOLWARS_MODES, "woolwars"],
+ [WOOLGAMES_MODES, "woolgames"],
]);
export const MODES_TO_FORMATTED = new Map, FormattedGame>(
@@ -454,7 +456,7 @@ export const MODES_TO_FORMATTED = new Map, Forma
[VAMPIREZ_MODES, FormattedGame.VAMPIREZ],
[WALLS_MODES, FormattedGame.WALLS],
[WARLORDS_MODES, FormattedGame.WARLORDS],
- [WOOLWARS_MODES, FormattedGame.WOOLWARS],
+ [WOOLGAMES_MODES, FormattedGame.WOOLGAMES],
]
);
diff --git a/assets/private b/assets/private
index 47985a511..f8b5157d1 160000
--- a/assets/private
+++ b/assets/private
@@ -1 +1 @@
-Subproject commit 47985a511b296ea4c8aab95b50587bb124b390f3
+Subproject commit f8b5157d157b79b51fd1b3e3a9f6c97ed6f4856e
diff --git a/assets/public b/assets/public
index 012d5dc2c..8a79be281 160000
--- a/assets/public
+++ b/assets/public
@@ -1 +1 @@
-Subproject commit 012d5dc2cb7c436cfc8caf94e3908fd1d6a18cff
+Subproject commit 8a79be281eaf8432f3af6348254b9c098f0f6459
diff --git a/locales/bg/default.json b/locales/bg/default.json
index 7e0beb447..35d547692 100644
--- a/locales/bg/default.json
+++ b/locales/bg/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "View your {{name}} stats",
"invite": "Invite Statsify",
"language": "Change the language you see responses in",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify Socials",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "View someone's Hypixel recent games",
"server": "View Minecraft server status",
"skin": "View someone's Minecraft skin",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "View Hypixel Watchdog ban counts",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reset your historical stats",
"reset-session": "Reset your session stats"
diff --git a/locales/cs/default.json b/locales/cs/default.json
index d0b5dc4a3..f0477b0ec 100644
--- a/locales/cs/default.json
+++ b/locales/cs/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Zobrazit {{name}} statistiky",
"invite": "Pozvat Statsify",
"language": "Změnit jazyk, ve kterém vidíš odpovědi",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Sociální média Statsify",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Zobrazit něčí poslední hry na Hypixelu",
"server": "Zobrazit stav Minecraft serveru",
"skin": "Zobrazit něčí Minecraft skin",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Zobrazit počet Hypixel Watchdog banů",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Vyresetovat statistiky za určitou dobu",
"reset-session": "Vyresetovat statistiky za období"
diff --git a/locales/da/default.json b/locales/da/default.json
index 7e0beb447..35d547692 100644
--- a/locales/da/default.json
+++ b/locales/da/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "View your {{name}} stats",
"invite": "Invite Statsify",
"language": "Change the language you see responses in",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify Socials",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "View someone's Hypixel recent games",
"server": "View Minecraft server status",
"skin": "View someone's Minecraft skin",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "View Hypixel Watchdog ban counts",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reset your historical stats",
"reset-session": "Reset your session stats"
diff --git a/locales/de/default.json b/locales/de/default.json
index 899b3acfe..4f86aae77 100644
--- a/locales/de/default.json
+++ b/locales/de/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Zeigt deine {{name}} Statistiken an",
"invite": "Statsify einladen",
"language": "Ändere die Sprache, in der du Antworten siehst",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify Socials",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Zeigt die letzten Hypixel Spiele von jemandem an",
"server": "Zeigt den Minecraft Serverstatus an",
"skin": "Zeigt den Minecraft Skin von jemandem an",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Zeigt Hypixel Watchdog Bannanzahl an",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reset your historical stats",
"reset-session": "Reset your session stats"
diff --git a/locales/el/default.json b/locales/el/default.json
index 114afd609..b28c93eac 100644
--- a/locales/el/default.json
+++ b/locales/el/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Δες τα στατιστικά του {{name}}",
"invite": "Προσκάλεσε το Statsify",
"language": "Άλλαξε τη γλώσσα στην οποία βλέπεις τις απαντήσεις",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify Socials",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Δες τα πρόσφατα παιχνίδια κάποιου στον Hypixel",
"server": "Δες την κατάσταση του Minecraft διακομιστή",
"skin": "Δες την Minecraft εμφάνιση κάποιου",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Δες την καταμέτρηση αποκλεισμών του Hypixel Watchdog",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reset your historical stats",
"reset-session": "Reset your session stats"
diff --git a/locales/en-US/default.json b/locales/en-US/default.json
index 5e9ead13e..8a3e90281 100644
--- a/locales/en-US/default.json
+++ b/locales/en-US/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "View your {{name}} stats",
"invite": "Invite Statsify",
"language": "Change the language you see responses in",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify Socials",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -180,7 +180,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -200,7 +200,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "View someone's Hypixel recent games",
"server": "View Minecraft server status",
"skin": "View someone's Minecraft skin",
@@ -238,7 +238,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "View Hypixel Watchdog ban counts",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reset your historical stats",
"reset-session": "Reset your session stats"
@@ -790,7 +790,9 @@
"fails": "Fails",
"mapsCompleted": "Maps Completed",
"arcadeWins": "Arcade Wins",
- "draws": "Draws"
+ "draws": "Draws",
+ "sheepThrown": "Sheep Thrown",
+ "magicWool": "Magic Wool"
},
"tips": {
"discord": "$t(emojis:socials.discord) Join our **$t(socials.discord)** and get **20% lower cooldowns** $t(emojis:heart)",
diff --git a/locales/en-US/emojis.json b/locales/en-US/emojis.json
index 4f144dc20..aa45de9b1 100644
--- a/locales/en-US/emojis.json
+++ b/locales/en-US/emojis.json
@@ -149,7 +149,7 @@
"VAMPIREZ": "<:VAMPIREZ:995756102463529041>",
"WALLS": "<:WALLS:995756103969276006>",
"WARLORDS": "<:WARLORDS:995756105244356648>",
- "WOOLWARS": "<:WOOLWARS:995756106225819699>",
+ "WOOLGAMES": "<:WOOLWARS:995756106225819699>",
"IDLE": "<:UNKNOWN:996630413441245204>",
"LIMBO": "<:UNKNOWN:996630413441245204>",
"QUEUE": "<:UNKNOWN:996630413441245204>"
diff --git a/locales/es-ES/default.json b/locales/es-ES/default.json
index 6fe3ac2d0..de252fc94 100644
--- a/locales/es-ES/default.json
+++ b/locales/es-ES/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Ve tus estadísticas de {{name}}",
"invite": "Invitar a Statsify",
"language": "Cambiar el idioma en el que ves las respuestas",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Sociales Statsify",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Ve los juegos recientes de alguien en Hypixel",
"server": "Ve el estado de un servidor de Minecraft",
"skin": "Ve el skin de Minecraft de alguien",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Ve el recuento de baneos de Watchdog en Hypixel",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Restablece tu historial de estadísticas",
"reset-session": "Restablece tus estadísticas de la sesión"
diff --git a/locales/fi/default.json b/locales/fi/default.json
index 37faef120..4a05c165d 100644
--- a/locales/fi/default.json
+++ b/locales/fi/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Näytä tilastosi pelissä {{name}}",
"invite": "Kutsu Statsify",
"language": "Vaihda kieltä, jolla näet vastaukset",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsifyn sosiaaliset mediat",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Näytä jonkun viimeisimmät Hypixel-pelit",
"server": "Näytä Minecraft-palvelimien status",
"skin": "Näytä jonkun Minecraft-skini",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Tarkastele Watchdogin antamien porttikieltojen määrää",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reset your historical stats",
"reset-session": "Reset your session stats"
diff --git a/locales/fr/default.json b/locales/fr/default.json
index 7f11dad6b..cad5334ba 100644
--- a/locales/fr/default.json
+++ b/locales/fr/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Voir vos stats en {{name}}",
"invite": "Inviter Statsify",
"language": "Changer la langue dans laquelle vous voyez les réponses",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Réseaux de Statsify",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "Voir vos statistiques mensuelles dans les différents jeux",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "Voir vos Ratios, Milestones & Estimations du mode de jeu",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Voir les jeux Hypixel récents de quelqu'un",
"server": "Voir le statut d'un serveur Minecraft",
"skin": "Voir le skin Minecraft de quelqu'un",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Voir le nombre de bannissements du Watchdog d'Hypixel",
"weekly": "Voir vos statistiques hebdomadaires dans différents jeux",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "Voir vos statistiques d'hier dans différents jeux",
"reset-historical": "Réinnisialiser vos historiques de stats",
"reset-session": "Réinnisialiser vos stats de session"
diff --git a/locales/hi/default.json b/locales/hi/default.json
index 7e0beb447..35d547692 100644
--- a/locales/hi/default.json
+++ b/locales/hi/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "View your {{name}} stats",
"invite": "Invite Statsify",
"language": "Change the language you see responses in",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify Socials",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "View someone's Hypixel recent games",
"server": "View Minecraft server status",
"skin": "View someone's Minecraft skin",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "View Hypixel Watchdog ban counts",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reset your historical stats",
"reset-session": "Reset your session stats"
diff --git a/locales/hr/default.json b/locales/hr/default.json
index 7e0beb447..35d547692 100644
--- a/locales/hr/default.json
+++ b/locales/hr/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "View your {{name}} stats",
"invite": "Invite Statsify",
"language": "Change the language you see responses in",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify Socials",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "View someone's Hypixel recent games",
"server": "View Minecraft server status",
"skin": "View someone's Minecraft skin",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "View Hypixel Watchdog ban counts",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reset your historical stats",
"reset-session": "Reset your session stats"
diff --git a/locales/hu/default.json b/locales/hu/default.json
index c47b2e3b1..1ad81629c 100644
--- a/locales/hu/default.json
+++ b/locales/hu/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Nézd meg a {{name}} statisztikáid",
"invite": "Statsify Meghívása",
"language": "Saját Nyelv Megváltoztatása",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify Linkek",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Nézd meg valaki játékelőzményét a Hypixelen",
"server": "Nézd meg egy Minecraft szerver státuszát",
"skin": "Nézd meg valaki Minecraft skinjét",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Nézd meg a Hypixel Watchdog kitiltások számát",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reset your historical stats",
"reset-session": "Reset your session stats"
diff --git a/locales/it/default.json b/locales/it/default.json
index 806abee59..88ee58e5e 100644
--- a/locales/it/default.json
+++ b/locales/it/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Visualizza le statistiche di {{name}}",
"invite": "Invita Statsify",
"language": "Cambia la lingua delle tue risposte in",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Social di Statsify",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Visualizza le partite giocate di recente da un utente su Hypixel",
"server": "Visualizza lo stato di un server Minecraft",
"skin": "Visualizza la skin di Minecraft di un utente",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Visualizza il conteggio dei ban del \"Watchdog\" di Hypixel",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Ripristina le tue statistiche storiche",
"reset-session": "Ripristina la tua sessione di statistiche"
diff --git a/locales/ja/default.json b/locales/ja/default.json
index 5e79a70a5..b618136da 100644
--- a/locales/ja/default.json
+++ b/locales/ja/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "View your {{name}} stats",
"invite": "Invite Statsify",
"language": "Change the language you see responses in",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify Socials",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "View someone's Hypixel recent games",
"server": "View Minecraft server status",
"skin": "View someone's Minecraft skin",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "View Hypixel Watchdog ban counts",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reset your historical stats",
"reset-session": "Reset your session stats"
diff --git a/locales/ko/default.json b/locales/ko/default.json
index 611f3702e..f9a7e4125 100644
--- a/locales/ko/default.json
+++ b/locales/ko/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "{{name}}의 전적을 봐요",
"invite": "Statsify 초대 방법을 확인해요",
"language": "봇이 사용하는 언어를 변경해요",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify의 소셜 미디어를 확인해요",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "다른 분이 Hypixel에서 최근 플레이한 게임을 봐요",
"server": "Minecraft 서버 상태를 봐요",
"skin": "다른 분의 Minecraft 스킨을 봐요",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Hypixel Watchdog이 한 차단 횟수를 봐요",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "기간 전적을 초기화해요",
"reset-session": "세션 전적을 초기화해요"
diff --git a/locales/lt/default.json b/locales/lt/default.json
index 7e0beb447..35d547692 100644
--- a/locales/lt/default.json
+++ b/locales/lt/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "View your {{name}} stats",
"invite": "Invite Statsify",
"language": "Change the language you see responses in",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify Socials",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "View someone's Hypixel recent games",
"server": "View Minecraft server status",
"skin": "View someone's Minecraft skin",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "View Hypixel Watchdog ban counts",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reset your historical stats",
"reset-session": "Reset your session stats"
diff --git a/locales/nl/default.json b/locales/nl/default.json
index f5d399fed..5be0a5a96 100644
--- a/locales/nl/default.json
+++ b/locales/nl/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Bekijk je statistieken van {{name}}",
"invite": "Statsify Uitnodigen",
"language": "De taal waarin je reacties ziet wijzigen",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify Sociale Media",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Bekijk iemands recente Hypixel spellen",
"server": "Bekijk Minecraft server status",
"skin": "Bekijk iemands Minecraft skin",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Bekijk Hypixel Watchdog ban aantallen",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reset your historical stats",
"reset-session": "Reset your session stats"
diff --git a/locales/no/default.json b/locales/no/default.json
index 6207a8400..54d18d9dd 100644
--- a/locales/no/default.json
+++ b/locales/no/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Se din {{name}}-statistikk",
"invite": "Inviter Statsify",
"language": "Endre språket du ser svar på",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsifys sosiale medier",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Se en spillers sist spilte Hypixel-spill",
"server": "Se status for Minecraft-server",
"skin": "Se en spillers Minecraft-skin",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Se antall utestengt av Hypixel Watchdog",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reset your historical stats",
"reset-session": "Reset your session stats"
diff --git a/locales/pl/default.json b/locales/pl/default.json
index fa818ea77..653b3b18e 100644
--- a/locales/pl/default.json
+++ b/locales/pl/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Zobacz swoje statystyki z {{name}}",
"invite": "Zaproś Statsify",
"language": "Zmień język, w którym widzisz odpowiedzi",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Media Społecznościowe Statsify",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Zobacz czyjeś ostatnie gry na Hypixel",
"server": "Zobacz status serwera Minecraft",
"skin": "Zobacz czyjąś skórkę Minecraft",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Zobacz liczbę banów Hypixel Watchdog",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Zresetuj swoje historyczne statystyki",
"reset-session": "Zresetuj swoje statystyki sesji"
diff --git a/locales/pt-BR/default.json b/locales/pt-BR/default.json
index 0734397ce..f1dad20f8 100644
--- a/locales/pt-BR/default.json
+++ b/locales/pt-BR/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Exibe as estatísticas de {{name}}",
"invite": "Convida o Statsify",
"language": "Altera o idioma em que você vê as respostas",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Redes sociais do Statsify",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Exibe partidas recentes de alguém no Hypixel",
"server": "Exibe o status de um servidor de Minecraft",
"skin": "Exibe a skin de alguém no Minecraft",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Exibe a contagem de banimentos do Hypixel Watchdog",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reinicia seu histórico de estatísticas",
"reset-session": "Reinicia sua sessão de estatísticas"
diff --git a/locales/ro/default.json b/locales/ro/default.json
index 28f853464..feef58f5d 100644
--- a/locales/ro/default.json
+++ b/locales/ro/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Vezi statisticile tale {{name}}",
"invite": "Invită Statsify",
"language": "Schimbă limba în care vezi răspunsurile",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Social-urile Statsify-ului",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Vezi jocurile recente pe Hypixel unei persoane",
"server": "Vezi starea serverului de Minecraft",
"skin": "Vezi skin-ul unei persoane pe Minecraft",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Vezi numărul de ban-uri de la Hypixel Watchdog",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Resetează-ți statisticile istorice",
"reset-session": "Resetează-ți statisticile sesiunii"
diff --git a/locales/ru/default.json b/locales/ru/default.json
index 99a3c7c23..0adce3f58 100644
--- a/locales/ru/default.json
+++ b/locales/ru/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Посмотреть свою статистику {{name}}",
"invite": "Пригласить Statsify",
"language": "Изменить язык, в котором вы видите ответы",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Соцсети Statsify",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Просмотреть чьи-то недавние игры Hypixel",
"server": "Просмотреть состояние сервера Minecraft",
"skin": "Просмотреть чей-то скин в Minecraft",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Посмотреть количество банов Hypixel Watchdog",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reset your historical stats",
"reset-session": "Reset your session stats"
diff --git a/locales/sv-SE/default.json b/locales/sv-SE/default.json
index 07b9b0a25..8ae5d6d30 100644
--- a/locales/sv-SE/default.json
+++ b/locales/sv-SE/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Visa statistik för {{name}}",
"invite": "Bjud in Statsify",
"language": "Ändra språket du ser svar på",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify sociala medier",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Visa någons Hypixel senaste spel spelade",
"server": "Visa Minecraft server status",
"skin": "Se någons Minecraft skin",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Visa Hypixel Watchdog ban räkning",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Återställ din historiska statistik",
"reset-session": "Återställ din sessions statistik"
diff --git a/locales/th/default.json b/locales/th/default.json
index e2a8c5d27..08e3db2cf 100644
--- a/locales/th/default.json
+++ b/locales/th/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "ดูสถิติ {{name}} ของคุณ",
"invite": "เชิญ Statsify",
"language": "เปลี่ยนภาษาที่คุณเห็นคำตอบใน",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify โซเชียล",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "ดูเกมล่าสุดของ Hypixel ของใครบางคน",
"server": "ดูสถานะเซิร์ฟเวอร์ Minecraft",
"skin": "ดูสกิน Minecraft ของใครบางคน",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "ดูจำนวนการแบน Hypixel Watchdog",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reset your historical stats",
"reset-session": "Reset your session stats"
diff --git a/locales/tr/default.json b/locales/tr/default.json
index 324df701f..8023b5fb1 100644
--- a/locales/tr/default.json
+++ b/locales/tr/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "{{name}} istatistiklerinizi görüntüleyin",
"invite": "Statsify'ı davet edin",
"language": "Yanıtları gördüğünüz dili değiştirin",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify'ın sosyal medya hesapları",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Birinin Hypixel son oyunlarını görüntüleyin",
"server": "Minecraft sunucu statüsünü görüntüleyin",
"skin": "Birinin Minecraft dış görünüşünü görüntüleyin",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Hypixel Watchdog yasaklama sayılarını görüntüleyin",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Geçmiş istatistiklerinizi sıfırlayın",
"reset-session": "Oturum istatistiklerinizi sıfırlayın"
diff --git a/locales/uk/default.json b/locales/uk/default.json
index 81521a577..f74a0bda6 100644
--- a/locales/uk/default.json
+++ b/locales/uk/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Переглянути вашу статистику {{name}}",
"invite": "Запросити Statsify",
"language": "Змінити мову, якою ви бачите відповіді",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Соціальні мережі Statsify",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Переглянути чиїсь нещодавні ігри Hypixel",
"server": "Переглянути статус сервера Minecraft",
"skin": "Переглянути чийсь скін Minecraft",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Переглянути кількість банів Hypixel Watchdog",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Скинути вашу історичну статистику",
"reset-session": "Скинути статистику сеансу"
diff --git a/locales/vi/default.json b/locales/vi/default.json
index 3e21eecd9..c2eb6467c 100644
--- a/locales/vi/default.json
+++ b/locales/vi/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "Xem thông tin {{name}} của bạn",
"invite": "Mời Statsify",
"language": "Thay đổi ngôn ngữ mà bạn nhìn thấy",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Nền tảng xã hội của Statsify",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "Xem những trò chơi gần đây của ai đó trong Hypixel",
"server": "Xem trạng thái của máy chủ minecraft",
"skin": "Xem nhân vật Minecraft của một ai đó",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "Xem số lượng mà Hypixel Watchdog đã ban",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "Reset your historical stats",
"reset-session": "Reset your session stats"
diff --git a/locales/zh-CN/default.json b/locales/zh-CN/default.json
index 398f66663..6d137ecc3 100644
--- a/locales/zh-CN/default.json
+++ b/locales/zh-CN/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "查看您的{{name}}统计信息",
"invite": "邀请Statsify",
"language": "更改您看到回复的语言",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify的社交网站",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "查看玩家游玩Hypixel的最近游戏",
"server": "查看我的世界服务器状态",
"skin": "查看玩家的我的世界皮肤",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "查看Hypixel看门狗封禁次数",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "重置您的历史统计数据",
"reset-session": "Reset your session stats"
diff --git a/locales/zh-TW/default.json b/locales/zh-TW/default.json
index be6bb6b53..6bcca273a 100644
--- a/locales/zh-TW/default.json
+++ b/locales/zh-TW/default.json
@@ -82,7 +82,7 @@
"historical-vampirez": "$t(commands.historical-command, { \"name\": \"VampireZ\" })",
"historical-walls": "$t(commands.historical-command, { \"name\": \"Walls\" })",
"historical-warlords": "$t(commands.historical-command, { \"name\": \"Warlords\" })",
- "historical-woolwars": "$t(commands.historical-command, { \"name\": \"WoolWars\" })",
+ "historical-woolgames": "$t(commands.historical-command, { \"name\": \"WoolGames\" })",
"session-arcade": "$t(commands.session-command, { \"name\": \"Arcade\" })",
"session-arenabrawl": "$t(commands.session-command, { \"name\": \"Arena Brawl\" })",
"session-bedwars": "$t(commands.session-command, { \"name\": \"BedWars\" })",
@@ -107,7 +107,7 @@
"session-vampirez": "$t(commands.session-command, { \"name\": \"VampireZ\" })",
"session-walls": "$t(commands.session-command, { \"name\": \"Walls\" })",
"session-warlords": "$t(commands.session-command, { \"name\": \"Warlords\" })",
- "session-woolwars": "$t(commands.session-command, { \"name\": \"WoolWars\" })",
+ "session-woolgames": "$t(commands.session-command, { \"name\": \"WoolGames\" })",
"hypixel-command": "查看您{{name}}的統計數據",
"invite": "邀請Statsify",
"language": "更改您看的語言",
@@ -140,7 +140,7 @@
"leaderboard-vampirez": "$t(commands.leaderboard-command, { \"name\": \"VampireZ\" })",
"leaderboard-walls": "$t(commands.leaderboard-command, { \"name\": \"Walls\" })",
"leaderboard-warlords": "$t(commands.leaderboard-command, { \"name\": \"Warlords\" })",
- "leaderboard-woolwars": "$t(commands.leaderboard-command, { \"name\": \"WoolWars\" })",
+ "leaderboard-woolgames": "$t(commands.leaderboard-command, { \"name\": \"WoolGames\" })",
"links": "Statsify連結",
"megawalls": "$t(commands.hypixel-command, { \"name\": \"MegaWalls\" })",
"monthly": "View your monthly stats in various games",
@@ -179,7 +179,7 @@
"rankings-vampirez": "$t(commands.rankings-command, { \"name\": \"VampireZ\" })",
"rankings-walls": "$t(commands.rankings-command, { \"name\": \"Walls\" })",
"rankings-warlords": "$t(commands.rankings-command, { \"name\": \"Warlords\" })",
- "rankings-woolwars": "$t(commands.rankings-command, { \"name\": \"WoolWars\" })",
+ "rankings-woolgames": "$t(commands.rankings-command, { \"name\": \"WoolGames\" })",
"ratios": "View your Gamemode Ratio Milestones & Estimations",
"ratios-arcade": "$t(commands.ratios-command, { \"name\": \"Arcade\" })",
"ratios-arenabrawl": "$t(commands.ratios-command, { \"name\": \"Arena Brawl\" })",
@@ -199,7 +199,7 @@
"ratios-vampirez": "$t(commands.ratios-command, { \"name\": \"VampireZ\" })",
"ratios-walls": "$t(commands.ratios-command, { \"name\": \"Walls\" })",
"ratios-warlords": "$t(commands.ratios-command, { \"name\": \"Warlords\" })",
- "ratios-woolwars": "$t(commands.ratios-command, { \"name\": \"WoolWars\" })",
+ "ratios-woolgames": "$t(commands.ratios-command, { \"name\": \"WoolGames\" })",
"recentgames": "查看玩家最近在Hypixel遊玩過的遊戲",
"server": "查看當個創世神的伺服器狀態",
"skin": "查看玩家當個創世神的外觀",
@@ -237,7 +237,7 @@
"warlords": "$t(commands.hypixel-command, { \"name\": \"Warlords\" })",
"watchdog": "查看Hypixel Watchdog查禁總計",
"weekly": "View your weekly stats in various games",
- "woolwars": "$t(commands.hypixel-command, { \"name\": \"WoolWars\" })",
+ "woolgames": "$t(commands.hypixel-command, { \"name\": \"WoolGames\" })",
"yesterday": "View your stats from yesterday in various games",
"reset-historical": "重置您的歷史統計數據",
"reset-session": "Reset your session stats"
diff --git a/packages/discord/src/messages/components/select-menu.builder.ts b/packages/discord/src/messages/components/select-menu.builder.ts
index a8f8d0d26..91ed4d569 100644
--- a/packages/discord/src/messages/components/select-menu.builder.ts
+++ b/packages/discord/src/messages/components/select-menu.builder.ts
@@ -62,9 +62,11 @@ export class SelectMenuBuilder {
#custom_id: string;
#disabled: boolean;
#options: SelectMenuOptionBuilder[] = [];
+ #defaultIndex: number;
public constructor() {
this.customId(randomUUID());
+ this.#defaultIndex = 0;
}
public option(option: SelectMenuOptionBuilder): this {
@@ -84,9 +86,9 @@ export class SelectMenuBuilder {
}
public activeOption(index: number): this {
- this.#options.forEach((option, i) => {
- option.default(i === index);
- });
+ this.#options[this.#defaultIndex].default(false);
+ this.#defaultIndex = index;
+ this.#options[index].default(true);
return this;
}
@@ -98,7 +100,7 @@ export class SelectMenuBuilder {
public build(locale: LocalizeFunction): APISelectMenuComponent {
return {
custom_id: this.#custom_id,
- type: ComponentType.SelectMenu,
+ type: ComponentType.StringSelect,
disabled: this.#disabled,
options: this.#options.map((option) => option.build(locale)),
};
diff --git a/packages/discord/src/services/paginate.service.ts b/packages/discord/src/services/paginate.service.ts
index 69bc8269c..0d2631c4e 100644
--- a/packages/discord/src/services/paginate.service.ts
+++ b/packages/discord/src/services/paginate.service.ts
@@ -21,7 +21,8 @@ import {
SelectMenuBuilder,
SelectMenuOptionBuilder,
} from "#messages";
-import type { CommandContext } from "#command";
+import { Interaction } from "#interaction";
+import type { AbstractCommandListener, CommandContext, InteractionHook } from "#command";
type PaginateInteractionContent = IMessage | Message | EmbedBuilder | Canvas;
@@ -29,13 +30,15 @@ type PaginateInteractionContentGenerator = (
t: LocalizeFunction
) => PaginateInteractionContent | Promise;
-export interface Page {
+export type Page = PageInput & ({ subPages: SubPage[] } | { generator: PaginateInteractionContentGenerator });
+export type SubPage = PageInput & { generator: PaginateInteractionContentGenerator };
+
+interface PageInput {
label: LocalizationString;
emoji?: LocalizationString | false;
- generator: PaginateInteractionContentGenerator;
}
-type PageController = ButtonBuilder[] | [SelectMenuBuilder];
+type PageId = `${number}|${number}`;
@Service()
export class PaginateService {
@@ -46,57 +49,94 @@ export class PaginateService {
* @param timeout When to stop the pagination (ms), defaults to 300000
*/
public async paginate(context: CommandContext, pages: Page[], timeout = 300_000) {
- if (pages.length === 1)
- return context.reply(await this.getMessage(context, [], 0, pages));
+ const cache = new Map();
+ const t = context.t();
- const userId = context.getInteraction().getUserId();
- const user = context.getUser();
+ const getMessage = async (index: number, subIndex: number) => {
+ const pageId: PageId = `${index}|${subIndex}`;
+ if (cache.has(pageId)) return cache.get(pageId)!;
- const cache = new Map();
- let index = 0;
+ const page = pages[index];
+ let content: PaginateInteractionContent;
+
+ if ("subPages" in page) {
+ const subPage = page.subPages[subIndex];
+ content = await subPage.generator(t);
+ } else {
+ content = await page.generator(t);
+ }
- const controller = this.getPageController(pages, index);
+ const message = await this.toMessage(content);
+ cache.set(pageId, message);
+ return message;
+ };
+
+ // If there is only one page with no sub pages, return the message immediately without pagination
+ if (pages.length === 1 && "generator" in pages[0]) return getMessage(0, 0);
+
+ const userId = context.getInteraction().getUserId();
const listener = context.getListener();
- controller.forEach((component, i) => {
- listener.addHook(component.getCustomId(), async (interaction) => {
- if (user?.locale) interaction.setLocale(user.locale);
+ let currentIndex = 0;
+ let currentSubIndex = 0;
- let page = 0;
+ const mainController = new PageController(pages, currentIndex);
- if (interaction.isButtonInteraction()) page = i;
- else if (interaction.isSelectMenuInteraction())
- page = Number(interaction.getData().values[0]);
+ const page = pages[currentIndex];
+ let subController = "subPages" in page ? new PageController(page.subPages, currentSubIndex) : undefined;
- const message = cache.has(page) ?
- cache.get(page)! :
- await this.getMessage(context, controller, page, pages);
+ mainController.register(listener, (interaction, index) => handler(interaction, index, 0));
+ subController?.register(listener, (interaction, subIndex) => handler(interaction, currentIndex, subIndex));
- cache.set(page, message);
+ async function handler(interaction: Interaction, index: number, subIndex: number) {
+ interaction.setLocale(t.locale);
- if (interaction.getUserId() === userId) {
- index = page;
- this.setActiveControl(controller, index);
- return context.reply(message);
+ // Send an ephemeral preview if the user is not the one who initiated the interaction
+ if (interaction.getUserId() !== userId) {
+ const message = await getMessage(index, subIndex);
+ return interaction.sendFollowup({ ...message, components: [], ephemeral: true });
+ }
+
+ if (index !== currentIndex) {
+ // [TODO]: remove all hooks for sub pages
+ subController?.unregister(listener);
+ mainController.switchPage(index);
+
+ currentIndex = index;
+ currentSubIndex = 0;
+
+ if ("subPages" in pages[index]) {
+ subController = new PageController(pages[index].subPages, currentSubIndex);
+ subController.register(listener, (interaction, subIndex) => handler(interaction, currentIndex, subIndex));
+ } else {
+ subController = undefined;
}
+ } else if (subIndex !== currentSubIndex) {
+ subController?.switchPage(subIndex);
+ currentSubIndex = subIndex;
+ }
- return interaction.sendFollowup({ ...message, components: [], ephemeral: true });
- });
- });
+ const message = await getMessage(index, subIndex);
- setTimeout(() => {
- controller.forEach((component) => listener.removeHook(component.getCustomId()));
+ message.components = [mainController.getActionRow(), subController?.getActionRow()]
+ .filter((row) => row !== undefined);
- context.reply({
- components: [],
- });
+ return context.reply(message);
+ }
+ function onTimeout() {
+ mainController.unregister(listener);
+ subController?.unregister(listener);
cache.clear();
- }, timeout);
+ return context.reply({ components: [] });
+ }
+
+ setTimeout(onTimeout, timeout);
- const message = await this.getMessage(context, controller, index, pages);
- cache.set(index, message);
+ const message = await getMessage(currentIndex, currentSubIndex);
+ message.components = [mainController.getActionRow(), subController?.getActionRow()]
+ .filter((row) => row !== undefined);
return message;
}
@@ -108,7 +148,7 @@ export class PaginateService {
* @param forwardButton The button to use for forward pagination
* @param backwardButton The button to use for back pagination
* @param invertButtons Whether to invert the buttons (backward becomes forward, forward becomes backward)
- * @param index The starting page
+ * @param startingIndex The starting page
* @param timeout When to stop the pagination (ms), defaults to 300000
*/
public async scrollingPagination(
@@ -117,15 +157,27 @@ export class PaginateService {
forwardButton?: ButtonBuilder,
backwardButton?: ButtonBuilder,
invertButtons = false,
- index = 0,
+ startingIndex = 0,
timeout = 300_000
) {
- const userId = context.getInteraction().getUserId();
- const user = context.getUser();
+ const currentIndex = startingIndex;
const cache = new Map();
-
const t = context.t();
+ const getMessage = async (index: number) => {
+ if (cache.has(index)) return cache.get(index)!;
+
+ const content = await pages[index](t);
+ const message = await this.toMessage(content);
+ cache.set(index, message);
+
+ return message;
+ };
+
+ if (pages.length === 1) return getMessage(currentIndex);
+
+ const userId = context.getInteraction().getUserId();
+
const controller = [
backwardButton ?? new ButtonBuilder().emoji(t("emojis:backward")),
forwardButton ?? new ButtonBuilder().emoji(t("emojis:forward")),
@@ -137,26 +189,23 @@ export class PaginateService {
controller.forEach((component, i) => {
listener.addHook(component.getCustomId(), async (interaction) => {
- if (user?.locale) interaction.setLocale(user.locale);
+ interaction.setLocale(t.locale);
let page: number;
if (i === 0) {
// Backwards
- page = index == 0 ? pages.length - 1 : index - 1;
+ page = startingIndex == 0 ? pages.length - 1 : startingIndex - 1;
} else {
// Forwards
- page = index == pages.length - 1 ? 0 : index + 1;
+ page = startingIndex == pages.length - 1 ? 0 : startingIndex + 1;
}
- const message = cache.has(page) ?
- cache.get(page)! :
- await this.getMessage(context, controller, page, pages);
+ const message = await getMessage(page);
- cache.set(page, message);
-
- if (interaction.getUserId() === userId) {
- index = page;
+ if (interaction.getUserId() === userId) {
+ startingIndex = page;
+ message.components = [new ActionRowBuilder(controller)];
return context.reply(message);
}
@@ -164,100 +213,89 @@ export class PaginateService {
});
});
- setTimeout(() => {
+ function onTimeout() {
controller.forEach((component) => listener.removeHook(component.getCustomId()));
-
- context.reply({
- components: [],
- });
-
+ context.reply({ components: [] });
cache.clear();
- }, timeout);
+ }
- const message = await this.getMessage(context, controller, index, pages);
- cache.set(index, message);
+ setTimeout(onTimeout, timeout);
+
+ const message = await getMessage(startingIndex);
+ message.components = [new ActionRowBuilder(controller)];
return message;
}
- private getPageController(pages: Page[], index: number): PageController {
- if (pages.length > 5) {
- const controller = new SelectMenuBuilder();
+ private async toMessage(content: PaginateInteractionContent): Promise {
+ if (content instanceof Message) return content;
+ if (content instanceof EmbedBuilder) return new Message({ embeds: [content] });
+ if (content instanceof Canvas) return new Message({
+ files: [{ name: "image.png", data: await content.toBuffer("png"), type: "image/png" }],
+ attachments: [],
+ });
- pages.forEach((page, i) => {
- const option = new SelectMenuOptionBuilder()
- .label(page.label)
- .value(`${i}`)
- .default(i === index);
+ return new Message(content);
+ }
+}
- if (page.emoji) option.emoji(page.emoji);
+class PageController {
+ #menu: SelectMenuBuilder | ButtonBuilder[];
- controller.option(option);
+ public constructor(pages: PageInput[], selected: number) {
+ if (pages.length > 5) {
+ const menu = new SelectMenuBuilder();
+
+ pages.forEach((page, index) => {
+ const option = new SelectMenuOptionBuilder().label(page.label).value(`${index}`);
+ if (page.emoji) option.emoji(page.emoji);
+ menu.option(option);
});
- return [controller];
+ menu.activeOption(selected);
+ this.#menu = menu;
+ } else {
+ this.#menu = pages.map((page, index) => {
+ const button = new ButtonBuilder().label(page.label).style(ButtonStyle.Secondary);
+ if (page.emoji) button.emoji(page.emoji);
+ if (index === selected) button.style(ButtonStyle.Primary);
+ return button;
+ });
}
+ }
- return pages.map((page, i) => {
- const button = new ButtonBuilder()
- .label(page.label)
- .style(i === index ? ButtonStyle.Primary : ButtonStyle.Secondary);
+ public switchPage(index: number) {
+ if (this.#menu instanceof SelectMenuBuilder) {
+ this.#menu.activeOption(index);
+ return;
+ }
- if (page.emoji) button.emoji(page.emoji);
+ this.#menu.forEach((button, i) => button.style(i === index ? ButtonStyle.Primary : ButtonStyle.Secondary));
+ }
- return button;
- });
+ public getActionRow(): ActionRowBuilder {
+ if (this.#menu instanceof SelectMenuBuilder) return new ActionRowBuilder([this.#menu]);
+ return new ActionRowBuilder(this.#menu);
}
- private async getMessage(
- context: CommandContext,
- controller: PageController,
- index: number,
- pages: Page[] | PaginateInteractionContentGenerator[]
- ): Promise {
- const t = context.t();
- const content = pages[index];
- const isScrolling = typeof content === "function";
- const pageContent = await (isScrolling ? content(t) : content.generator(t));
-
- let page: Message;
-
- if (pageContent instanceof Message) {
- page = pageContent;
- } else if (pageContent instanceof EmbedBuilder) {
- page = new Message({ embeds: [pageContent] });
- } else if (pageContent instanceof Canvas) {
- page = new Message({
- files: [
- {
- name: "image.png",
- data: await pageContent.toBuffer("png"),
- type: "image/png",
- },
- ],
- attachments: [],
+ public register(
+ listener: AbstractCommandListener,
+ handler: (interaction: Interaction, index: number) => ReturnType
+ ) {
+ if (this.#menu instanceof SelectMenuBuilder) {
+ return listener.addHook(this.#menu.getCustomId(), (interaction) => {
+ const index = Number(interaction.getData().values[0]);
+ return handler(interaction, index);
});
- } else {
- page = new Message(pageContent);
- }
-
- if (controller.length && pages.length > 1) {
- page.components = [new ActionRowBuilder(controller)];
}
- return page;
+ this.#menu.forEach((button, index) => {
+ listener.addHook(button.getCustomId(), (interaction) => handler(interaction, index));
+ });
}
- private setActiveControl(controller: PageController, index: number) {
- if (controller.length === 1) {
- (controller[0] as SelectMenuBuilder).activeOption(index);
- return;
- }
-
- controller.forEach((component, i) =>
- (component as ButtonBuilder).style(
- i === index ? ButtonStyle.Primary : ButtonStyle.Secondary
- )
- );
+ public unregister(listener: AbstractCommandListener) {
+ if (this.#menu instanceof SelectMenuBuilder) listener.removeHook(this.#menu.getCustomId());
+ else this.#menu.forEach((button) => listener.removeHook(button.getCustomId()));
}
}
diff --git a/packages/schemas/src/game/game-modes.ts b/packages/schemas/src/game/game-modes.ts
index 3bc8952f7..0ab5ad88c 100644
--- a/packages/schemas/src/game/game-modes.ts
+++ b/packages/schemas/src/game/game-modes.ts
@@ -8,37 +8,55 @@
import { prettify } from "@statsify/util";
-interface StatsifyGameMode {
- hypixel?: string;
- api: T;
- formatted?: string;
-}
+export type GameMode = {
+ [Key in ApiModeFromGameModes]: {
+ api: Key;
+ formatted: string;
+ hypixel?: string;
+ submode: Extract extends { submodes: SubMode[] } ? Omit["submodes"], undefined>[number], "formatted"> & { formatted: string } : undefined;
+ }
+}[ApiModeFromGameModes];
+
+export type GameModeWithSubModes = {
+ [Key in ApiModeFromGameModes]: {
+ api: Key;
+ formatted: string;
+ hypixel?: string;
+ submodes: Array["submodes"], undefined>[number], "formatted"> & { formatted: string }>;
+ }
+}[ApiModeFromGameModes];
-interface HypixelGameMode {
+export type Mode = {
hypixel: string;
formatted: string;
-}
+} | {
+ hypixel?: string;
+ api: string;
+ formatted?: string;
+ submodes?: SubMode[];
+};
-export interface GameMode
- extends Omit, "formatted"> {
- formatted: string;
-}
+type SubMode = { api: string; formatted?: string };
-export class GameModes {
- private modes: GameMode[] = [];
+export class GameModes {
+ private modes: GameModeWithSubModes[];
private hypixelModes: Record;
- public constructor(modes: (StatsifyGameMode | HypixelGameMode)[]) {
- this.modes = (modes.filter((m) => "api" in m) as StatsifyGameMode[]).map((m) => ({
+ public constructor(modes: Modes) {
+ this.modes = modes.filter((m) => "api" in m).map((m) => ({
hypixel: m.hypixel,
api: m.api,
formatted: m.formatted ?? prettify(m.api),
- }));
+ submodes: m.submodes?.map((sm) => ({ api: sm.api, formatted: sm.formatted ?? prettify(sm.api) })) ?? [],
+ })) as GameModeWithSubModes[];
this.hypixelModes = Object.fromEntries(
modes
- .filter((m) => "hypixel" in m)
- .map((m) => [m.hypixel, m.formatted ?? prettify((m as GameMode).api)])
+ .map((m) => {
+ if (typeof m.hypixel !== "string") return undefined;
+ const formatted = m.formatted ?? prettify((m as { api: string }).api);
+ return [m.hypixel, formatted] as const;
+ }).filter((entry) => entry !== undefined)
);
}
@@ -46,7 +64,7 @@ export class GameModes {
return this.modes.map(({ formatted }) => formatted);
}
- public getApiModes(): K[] {
+ public getApiModes(): ApiModeFromGameModes[] {
return this.modes.map(({ api }) => api);
}
@@ -59,4 +77,7 @@ export class GameModes {
}
}
-export type IGameModes = T extends GameModes ? U : never;
+export type ExtractGameModes = T extends GameModes ? U : never;
+export type ModeFromGameModes = Extract;
+export type ApiModeFromGameModes = ModeFromGameModes["api"];
+export type SubModesForMode> = Omit["submodes"][number], "formatted"> & { formatted: string };
diff --git a/packages/schemas/src/game/game.ts b/packages/schemas/src/game/game.ts
index 41c901563..f9281274f 100644
--- a/packages/schemas/src/game/game.ts
+++ b/packages/schemas/src/game/game.ts
@@ -36,7 +36,7 @@ export const GameIdMapping = {
VAMPIREZ: "VAMPIREZ",
WALLS: "WALLS",
BATTLEGROUND: "WARLORDS",
- WOOL_GAMES: "WOOLWARS",
+ WOOL_GAMES: "WOOLGAMES",
TOURNAMENT: "TOURNAMENT_LOBBY",
MAIN_LOBBY: "MAIN_LOBBY",
MAIN: "MAIN_LOBBY",
@@ -85,7 +85,7 @@ export enum FormattedGame {
VAMPIREZ = "§4VampireZ§f",
WALLS = "§eWalls§f",
WARLORDS = "§cWar§elords§f",
- WOOLWARS = "§cWool§9Wars§f",
+ WOOLGAMES = "§cWool§9Games§f",
TOURNAMENT_LOBBY = "§4Tournament §6Lobby",
MAIN_LOBBY = "§3Main §fLobby",
diff --git a/packages/schemas/src/gamecounts/index.ts b/packages/schemas/src/gamecounts/index.ts
index 1643ce71b..93cc8f39c 100644
--- a/packages/schemas/src/gamecounts/index.ts
+++ b/packages/schemas/src/gamecounts/index.ts
@@ -118,7 +118,7 @@ export class GameCounts {
public WARLORDS: GamePlayers;
@Field()
- public WOOLWARS: GamePlayers;
+ public WOOLGAMES: GamePlayers;
public constructor(data: APIData = {}) {
this.ARCADE = new GamePlayers(data[GameCodeMapping.ARCADE]);
@@ -168,6 +168,6 @@ export class GameCounts {
});
this.WARLORDS = new GamePlayers(data[GameCodeMapping.WARLORDS]);
- this.WOOLWARS = new GamePlayers(data[GameCodeMapping.WOOLWARS]);
+ this.WOOLGAMES = new GamePlayers(data[GameCodeMapping.WOOLGAMES]);
}
}
diff --git a/packages/schemas/src/guild/exp-by-game.ts b/packages/schemas/src/guild/exp-by-game.ts
index 16b1c56e2..ec116b8a8 100644
--- a/packages/schemas/src/guild/exp-by-game.ts
+++ b/packages/schemas/src/guild/exp-by-game.ts
@@ -86,8 +86,8 @@ export class ExpByGame {
@Field({ leaderboard: { name: FormattedGame.WARLORDS, fieldName, limit } })
public WARLORDS: number;
- @Field({ leaderboard: { name: FormattedGame.WOOLWARS, fieldName, limit } })
- public WOOLWARS: number;
+ @Field({ leaderboard: { name: FormattedGame.WOOLGAMES, fieldName, limit } })
+ public WOOLGAMES: number;
public constructor(data: APIData) {
this.ARCADE = data[GameCodeMapping.ARCADE];
@@ -113,6 +113,6 @@ export class ExpByGame {
this.VAMPIREZ = data[GameCodeMapping.VAMPIREZ];
this.WALLS = data[GameCodeMapping.WALLS];
this.WARLORDS = data[GameCodeMapping.WARLORDS];
- this.WOOLWARS = data[GameCodeMapping.WOOLWARS];
+ this.WOOLGAMES = data[GameCodeMapping.WOOLGAMES];
}
}
diff --git a/packages/schemas/src/player/gamemodes/arcade/index.ts b/packages/schemas/src/player/gamemodes/arcade/index.ts
index e0a818a88..9942f15f1 100644
--- a/packages/schemas/src/player/gamemodes/arcade/index.ts
+++ b/packages/schemas/src/player/gamemodes/arcade/index.ts
@@ -9,7 +9,6 @@
import {
BlockingDead,
BountyHunters,
- CaptureTheWool,
CreeperAttack,
DragonWars,
Dropper,
@@ -28,8 +27,8 @@ import {
ThrowOut,
Zombies,
} from "./mode.js";
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import { add } from "@statsify/math";
import type { APIData } from "@statsify/util";
@@ -37,7 +36,6 @@ export const ARCADE_MODES = new GameModes([
{ api: "overall" },
{ api: "blockingDead", hypixel: "DAYONE" },
{ api: "bountyHunters", hypixel: "ONEINTHEQUIVER" },
- { api: "captureTheWool", hypixel: "PVP_CTW" },
{ api: "creeperAttack", hypixel: "DEFENDER" },
{ api: "dragonWars", hypixel: "DRAGONWARS2" },
{ api: "dropper", hypixel: "DROPPER" },
@@ -55,24 +53,24 @@ export const ARCADE_MODES = new GameModes([
{ api: "seasonal" },
{ api: "throwOut", hypixel: "THROW_OUT" },
{ api: "zombies" },
-]);
+] as const);
-export type ArcadeModes = IGameModes;
+export type ArcadeModes = ExtractGameModes;
export const DROPPER_MODES = new GameModes([
{ api: "overall" },
{ api: "bestTimes" },
{ api: "completions" },
-]);
+] as const);
-export type DropperModes = IGameModes;
+export type DropperModes = ExtractGameModes;
export const PARTY_GAMES_MODES = new GameModes([
{ api: "overall" },
{ api: "roundWins" },
-]);
+] as const);
-export type PartyGamesModes = IGameModes;
+export type PartyGamesModes = ExtractGameModes;
export class Arcade {
@Field({ historical: { enabled: false } })
@@ -90,9 +88,6 @@ export class Arcade {
@Field()
public bountyHunters: BountyHunters;
- @Field()
- public captureTheWool: CaptureTheWool;
-
@Field()
public creeperAttack: CreeperAttack;
@@ -150,7 +145,6 @@ export class Arcade {
this.blockingDead = new BlockingDead(data);
this.bountyHunters = new BountyHunters(data);
- this.captureTheWool = new CaptureTheWool(data);
this.creeperAttack = new CreeperAttack(data);
this.dragonWars = new DragonWars(data, ap);
this.dropper = new Dropper(data?.dropper);
@@ -172,7 +166,6 @@ export class Arcade {
this.wins = add(
this.blockingDead.wins,
this.bountyHunters.wins,
- this.captureTheWool.wins,
this.dragonWars.wins,
this.dropper.wins,
this.enderSpleef.wins,
diff --git a/packages/schemas/src/player/gamemodes/arcade/mode.ts b/packages/schemas/src/player/gamemodes/arcade/mode.ts
index ce19310a8..11aacdcd6 100644
--- a/packages/schemas/src/player/gamemodes/arcade/mode.ts
+++ b/packages/schemas/src/player/gamemodes/arcade/mode.ts
@@ -65,109 +65,6 @@ export class BountyHunters {
this.bountyKills = data.bounty_kills_oneinthequiver;
}
}
-export class CaptureTheWool {
- @Field()
- public wins: number;
-
- @Field()
- public losses: number;
-
- @Field()
- public wlr: number;
-
- @Field()
- public draws: number;
-
- @Field()
- public kills: number;
-
- @Field()
- public deaths: number;
-
- @Field()
- public kdr: number;
-
- @Field()
- public assists: number;
-
- @Field()
- public woolCaptured: number;
-
- @Field()
- public woolPickedUp: number;
-
- @Field({
- leaderboard: {
- sort: "ASC",
- formatter: formatTime,
- additionalFields: ["this.wins"],
- },
- historical: { enabled: false },
- })
- public fastestWin: number;
-
- @Field({
- leaderboard: {
- sort: "ASC",
- formatter: formatTime,
- additionalFields: ["this.woolCaptured"],
- },
- historical: { enabled: false },
- })
- public fastestWoolCapture: number;
-
- @Field({
- leaderboard: { formatter: formatTime },
- historical: { enabled: false },
- })
- public longestGame: number;
-
- @Field({ leaderboard: { additionalFields: ["this.goldSpent"] } })
- public goldEarned: number;
-
- @Field({ leaderboard: { additionalFields: ["this.goldEarned"] } })
- public goldSpent: number;
-
- @Field({ leaderboard: { additionalFields: ["this.deathsToWoolHolder"] } })
- public killsOnWoolHolder: number;
-
- @Field({ leaderboard: { additionalFields: ["this.killsOnWoolHolder"] } })
- public deathsToWoolHolder: number;
-
- @Field({ leaderboard: { additionalFields: ["this.deathsAsWoolHolder"] } })
- public killsAsWoolHolder: number;
-
- @Field({ leaderboard: { additionalFields: ["this.killsAsWoolHolder"] } })
- public deathsAsWoolHolder: number;
-
- public constructor(data: APIData) {
- this.wins = data.woolhunt_participated_wins;
- this.losses = data.woolhunt_participated_losses;
- this.wlr = ratio(this.wins, this.losses);
- this.draws = data.woolhunt_participated_draws;
-
- this.kills = data.woolhunt_kills;
- this.deaths = data.woolhunt_deaths;
- this.kdr = ratio(this.kills, this.deaths);
- this.assists = data.woolhunt_assists;
-
- this.woolCaptured = data.woolhunt_wools_captured;
- this.woolPickedUp = data.woolhunt_wools_stolen;
-
- this.longestGame = (data.woolhunt_longest_game ?? 0) * 1000;
- this.fastestWin = (data.woolhunt_fastest_win ?? 0) * 1000;
- this.fastestWoolCapture = (data.woolhunt_fastest_wool_capture ?? 0) * 1000;
-
- this.goldEarned = data.woolhunt_gold_earned;
- this.goldSpent = Math.abs(data.woolhunt_gold_spent ?? 0);
-
- this.killsOnWoolHolder = data.woolhunt_kills_on_woolholder;
- this.deathsToWoolHolder = data.woolhunt_deaths_to_woolholder;
-
- this.killsAsWoolHolder = data.woolhunt_kills_with_wool;
- this.deathsAsWoolHolder = data.woolhunt_deaths_with_wool;
- }
-}
export class CreeperAttack {
@Field({ historical: { enabled: false } })
diff --git a/packages/schemas/src/player/gamemodes/arenabrawl/index.ts b/packages/schemas/src/player/gamemodes/arenabrawl/index.ts
index f09996ec9..f537a13dd 100644
--- a/packages/schemas/src/player/gamemodes/arenabrawl/index.ts
+++ b/packages/schemas/src/player/gamemodes/arenabrawl/index.ts
@@ -7,8 +7,8 @@
*/
import { ArenaBrawlMode, ArenaBrawlModeExt } from "./mode.js";
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import {
GamePrefix,
createPrefixProgression,
@@ -25,7 +25,7 @@ export const ARENA_BRAWL_MODES = new GameModes([
{ api: "solo" },
{ api: "doubles" },
{ api: "fours" },
-]);
+] as const);
const prefixes: GamePrefix[] = [
{ fmt: (n) => `§8[${n}]`, req: 0 },
@@ -40,7 +40,7 @@ const prefixes: GamePrefix[] = [
{ fmt: (n) => rainbow(`[${n}]`), req: 15_000 },
];
-export type ArenaBrawlModes = IGameModes;
+export type ArenaBrawlModes = ExtractGameModes;
export class ArenaBrawl {
@Field()
diff --git a/packages/schemas/src/player/gamemodes/bedwars/index.ts b/packages/schemas/src/player/gamemodes/bedwars/index.ts
index d7bfaf789..d7d6325a8 100644
--- a/packages/schemas/src/player/gamemodes/bedwars/index.ts
+++ b/packages/schemas/src/player/gamemodes/bedwars/index.ts
@@ -7,8 +7,8 @@
*/
import { BedWarsMode, ChallengesBedWars, DreamsBedWarsMode } from "./mode.js";
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import { Progression } from "#progression";
import { Slumber } from "./slumber.js";
import { deepSub } from "@statsify/math";
@@ -47,9 +47,9 @@ export const BEDWARS_MODES = new GameModes([
{ hypixel: "BEDWARS_EIGHT_TWO_VOIDLESS", formatted: "Voidless Doubles" },
{ hypixel: "BEDWARS_FOUR_FOUR_VOIDLESS", formatted: "Voidless Fours" },
{ hypixel: "BEDWARS_PRACTICE", formatted: "Practice" },
-]);
+] as const);
-export type BedWarsModes = IGameModes;
+export type BedWarsModes = ExtractGameModes;
export class BedWars {
@Field({ historical: { enabled: false } })
diff --git a/packages/schemas/src/player/gamemodes/blitzsg/index.ts b/packages/schemas/src/player/gamemodes/blitzsg/index.ts
index 5feea9108..a78889723 100644
--- a/packages/schemas/src/player/gamemodes/blitzsg/index.ts
+++ b/packages/schemas/src/player/gamemodes/blitzsg/index.ts
@@ -8,8 +8,8 @@
import { BlitzSGKit } from "./kit.js";
import { BlitzSGMode, BlitzSGOverall } from "./mode.js";
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import {
GamePrefix,
createPrefixProgression,
@@ -69,7 +69,7 @@ export const BLITZSG_MODES = new GameModes([
{ hypixel: "solo_normal", formatted: "Solo" },
{ hypixel: "teams_normal", formatted: "Doubles" },
-]);
+] as const);
const prefixes: GamePrefix[] = [
{ fmt: (n) => `§f[§7${n}§f]`, req: 0 },
@@ -84,7 +84,7 @@ const prefixes: GamePrefix[] = [
{ fmt: (n) => `§2§l[${n}]`, req: 300_000 },
];
-export type BlitzSGModes = IGameModes;
+export type BlitzSGModes = ExtractGameModes;
export class BlitzSG {
@Field({ historical: { enabled: false } })
diff --git a/packages/schemas/src/player/gamemodes/buildbattle/index.ts b/packages/schemas/src/player/gamemodes/buildbattle/index.ts
index fd941b86f..7e45a8190 100644
--- a/packages/schemas/src/player/gamemodes/buildbattle/index.ts
+++ b/packages/schemas/src/player/gamemodes/buildbattle/index.ts
@@ -12,8 +12,8 @@ import {
BuildBattleOverall,
BuildBattlePro,
} from "./mode.js";
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import {
GameTitle,
createPrefixProgression,
@@ -31,7 +31,7 @@ export const BUILD_BATTLE_MODES = new GameModes([
{ hypixel: "BUILD_BATTLE_TEAMS_NORMAL", formatted: "Teams" },
{ hypixel: "BUILD_BATTLE_SOLO_NORMAL", formatted: "Solo" },
{ hypixel: "BUILD_BATTLE_SOLO_PRO", formatted: "Pro" },
-]);
+] as const);
const titles: GameTitle[] = [
{ req: 0, fmt: (n) => `§f${n}`, title: "Rookie" },
@@ -48,7 +48,7 @@ const titles: GameTitle[] = [
{ req: 20_000, fmt: (n) => `§4${n}`, title: "Master" },
];
-export type BuildBattleModes = IGameModes;
+export type BuildBattleModes = ExtractGameModes;
export class BuildBattle {
@Field()
diff --git a/packages/schemas/src/player/gamemodes/challenges/index.ts b/packages/schemas/src/player/gamemodes/challenges/index.ts
index 9732f8bb1..7c18a90d7 100644
--- a/packages/schemas/src/player/gamemodes/challenges/index.ts
+++ b/packages/schemas/src/player/gamemodes/challenges/index.ts
@@ -28,10 +28,10 @@ import {
VampireZChallenges,
WallsChallenges,
WarlordsChallenges,
- WoolWarsChallenges,
+ WoolGamesChallenges,
} from "./modes/index.js";
+import { ExtractGameModes, FormattedGame, GameModes } from "#game";
import { Field } from "#metadata";
-import { FormattedGame, GameModes, IGameModes } from "#game";
export const CHALLENGE_MODES = new GameModes([
{ api: "overall" },
@@ -58,10 +58,10 @@ export const CHALLENGE_MODES = new GameModes([
{ api: "VAMPIREZ", formatted: removeFormatting(FormattedGame.VAMPIREZ) },
{ api: "WALLS", formatted: removeFormatting(FormattedGame.WALLS) },
{ api: "WARLORDS", formatted: removeFormatting(FormattedGame.WARLORDS) },
- { api: "WOOLWARS", formatted: removeFormatting(FormattedGame.WOOLWARS) },
-]);
+ { api: "WOOLGAMES", formatted: removeFormatting(FormattedGame.WOOLGAMES) },
+] as const);
-export type ChallengeModes = IGameModes;
+export type ChallengeModes = ExtractGameModes;
export class Challenges {
@Field({ leaderboard: { fieldName: `${FormattedGame.ARCADE} Challenges -` } })
@@ -126,8 +126,8 @@ export class Challenges {
@Field({ leaderboard: { fieldName: `${FormattedGame.WARLORDS} Challenges -` } })
public WARLORDS: WarlordsChallenges;
- @Field({ leaderboard: { fieldName: `${FormattedGame.WOOLWARS} Challenges -` } })
- public WOOLWARS: WoolWarsChallenges;
+ @Field({ leaderboard: { fieldName: `${FormattedGame.WOOLGAMES} Challenges -` } })
+ public WOOLGAMES: WoolGamesChallenges;
@Field({ leaderboard: { name: "Total Challenges", fieldName: "Challenges" } })
public total: number;
@@ -153,7 +153,7 @@ export class Challenges {
this.VAMPIREZ = new VampireZChallenges(challenges);
this.WALLS = new WallsChallenges(challenges);
this.WARLORDS = new WarlordsChallenges(challenges);
- this.WOOLWARS = new WoolWarsChallenges(challenges);
+ this.WOOLGAMES = new WoolGamesChallenges(challenges);
this.total = Math.max(
Object.values(challenges ?? {}).reduce((p, c) => p + c, 0),
@@ -163,3 +163,4 @@ export class Challenges {
}
export * from "./game-challenges.js";
+export * from "./modes/index.js";
diff --git a/packages/schemas/src/player/gamemodes/challenges/modes/index.ts b/packages/schemas/src/player/gamemodes/challenges/modes/index.ts
index 7ea3f0c76..dd665b5ad 100644
--- a/packages/schemas/src/player/gamemodes/challenges/modes/index.ts
+++ b/packages/schemas/src/player/gamemodes/challenges/modes/index.ts
@@ -26,4 +26,4 @@ export * from "./uhc.js";
export * from "./vampirez.js";
export * from "./walls.js";
export * from "./warlords.js";
-export * from "./woolwars.js";
+export * from "./woolgames.js";
diff --git a/packages/schemas/src/player/gamemodes/challenges/modes/woolgames.ts b/packages/schemas/src/player/gamemodes/challenges/modes/woolgames.ts
new file mode 100644
index 000000000..48bbd7105
--- /dev/null
+++ b/packages/schemas/src/player/gamemodes/challenges/modes/woolgames.ts
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) Statsify
+ *
+ * This source code is licensed under the GNU GPL v3 license found in the
+ * LICENSE file in the root directory of this source tree.
+ * https://github.com/Statsify/statsify/blob/main/LICENSE
+ */
+
+import { type APIData, removeFormatting } from "@statsify/util";
+import { Field } from "#metadata";
+import { FormattedGame } from "#game";
+import { add } from "@statsify/math";
+import { challengeFieldData } from "../util.js";
+import type { GameChallenges } from "../game-challenges.js";
+
+export class WoolGamesChallenges implements GameChallenges {
+ @Field({
+ ...challengeFieldData,
+ leaderboard: { ...challengeFieldData.leaderboard, name: "WoolWars Challenge" },
+ })
+ public woolWarsChallenge: number;
+
+ @Field({
+ ...challengeFieldData,
+ leaderboard: { ...challengeFieldData.leaderboard, name: "SheepWars Challenge" },
+ })
+ public sheepWarsChallenge: number;
+
+ @Field(challengeFieldData)
+ public captureTheWoolChallenge: number;
+
+ @Field({
+ leaderboard: {
+ fieldName: `${removeFormatting(FormattedGame.WOOLGAMES)} Total`,
+ name: "Total",
+ },
+ })
+ public total: number;
+
+ public constructor(challenges: APIData) {
+ this.woolWarsChallenge = challenges.WOOL_GAMES__wool_wars_challenge;
+ this.sheepWarsChallenge = challenges.WOOL_GAMES__sheep_wars_challenge;
+ this.captureTheWoolChallenge = challenges.WOOL_GAMES__capture_the_wool_challenge;
+
+ this.total = add(this.woolWarsChallenge, this.sheepWarsChallenge, this.captureTheWoolChallenge);
+ }
+}
diff --git a/packages/schemas/src/player/gamemodes/challenges/modes/woolwars.ts b/packages/schemas/src/player/gamemodes/challenges/modes/woolwars.ts
deleted file mode 100644
index 952cf574a..000000000
--- a/packages/schemas/src/player/gamemodes/challenges/modes/woolwars.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * Copyright (c) Statsify
- *
- * This source code is licensed under the GNU GPL v3 license found in the
- * LICENSE file in the root directory of this source tree.
- * https://github.com/Statsify/statsify/blob/main/LICENSE
- */
-
-import { type APIData, removeFormatting } from "@statsify/util";
-import { Field } from "#metadata";
-import { FormattedGame } from "#game";
-import { add } from "@statsify/math";
-import { challengeFieldData } from "../util.js";
-import type { GameChallenges } from "../game-challenges.js";
-
-export class WoolWarsChallenges implements GameChallenges {
- @Field(challengeFieldData)
- public flawless: number;
-
- @Field(challengeFieldData)
- public builder: number;
-
- @Field(challengeFieldData)
- public mercilessKiller: number;
-
- @Field({
- leaderboard: {
- fieldName: `${removeFormatting(FormattedGame.WOOLWARS)} Total`,
- name: "Total",
- },
- })
- public total: number;
-
- public constructor(challenges: APIData) {
- this.flawless = challenges.WOOL_GAMES__flawless_challenge;
- this.builder = challenges.WOOL_GAMES__builder_challenge;
- this.mercilessKiller = challenges.WOOL_GAMES__merciless_killer_challenge;
-
- this.total = add(this.flawless, this.builder, this.mercilessKiller);
- }
-}
diff --git a/packages/schemas/src/player/gamemodes/copsandcrims/index.ts b/packages/schemas/src/player/gamemodes/copsandcrims/index.ts
index 10c21d8a2..c66b28a8c 100644
--- a/packages/schemas/src/player/gamemodes/copsandcrims/index.ts
+++ b/packages/schemas/src/player/gamemodes/copsandcrims/index.ts
@@ -7,8 +7,8 @@
*/
import { CopsAndCrimsOverall, Deathmatch, Defusal, GunGame } from "./mode.js";
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import { GamePrefix, defaultPrefix, getFormattedPrefix } from "#prefixes";
import type { APIData } from "@statsify/util";
@@ -18,9 +18,9 @@ export const COPS_AND_CRIMS_MODES = new GameModes([
{ api: "deathmatch", hypixel: "deathmatch" },
{ api: "gunGame", hypixel: "gungame" },
{ hypixel: "normal_party", formatted: "Challenge" },
-]);
+] as const);
-export type CopsAndCrimsModes = IGameModes;
+export type CopsAndCrimsModes = ExtractGameModes;
type PrefixParams = [kills: number, prefix: string];
diff --git a/packages/schemas/src/player/gamemodes/duels/index.ts b/packages/schemas/src/player/gamemodes/duels/index.ts
index a1084956f..b05bb15a3 100644
--- a/packages/schemas/src/player/gamemodes/duels/index.ts
+++ b/packages/schemas/src/player/gamemodes/duels/index.ts
@@ -17,8 +17,8 @@ import {
SkyWarsDuels,
UHCDuels,
} from "./mode.js";
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import type { APIData } from "@statsify/util";
export const DUELS_MODES = new GameModes([
@@ -56,9 +56,9 @@ export const DUELS_MODES = new GameModes([
{ hypixel: "DUELS_BRIDGE_2V2V2V2", formatted: "Bridge 2v2v2v2" },
{ hypixel: "DUELS_BRIDGE_3V3V3V3", formatted: "Bridge 3v3v3v3" },
{ hypixel: "DUELS_CAPTURE_THREES", formatted: "Bridge CTF" },
-]);
+] as const);
-export type DuelsModes = IGameModes;
+export type DuelsModes = ExtractGameModes;
export const BRIDGE_MODES = new GameModes([
{ api: "overall" },
@@ -69,9 +69,9 @@ export const BRIDGE_MODES = new GameModes([
{ api: "2v2v2v2" },
{ api: "3v3v3v3" },
{ api: "ctf", formatted: "CTF" },
-]);
+] as const);
-export type BridgeModes = IGameModes;
+export type BridgeModes = ExtractGameModes;
export class Duels {
@Field({ store: { default: 300 }, leaderboard: { enabled: false } })
diff --git a/packages/schemas/src/player/gamemodes/general/index.ts b/packages/schemas/src/player/gamemodes/general/index.ts
index 08974df97..08ebee161 100644
--- a/packages/schemas/src/player/gamemodes/general/index.ts
+++ b/packages/schemas/src/player/gamemodes/general/index.ts
@@ -7,13 +7,13 @@
*/
import { Events } from "./events.js";
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import { getNetworkLevel } from "./util.js";
import type { APIData } from "@statsify/util";
-export const GENERAL_MODES = new GameModes([{ api: "overall" }]);
-export type GeneralModes = IGameModes;
+export const GENERAL_MODES = new GameModes([{ api: "overall" }] as const);
+export type GeneralModes = ExtractGameModes;
export class General {
@Field()
diff --git a/packages/schemas/src/player/gamemodes/index.ts b/packages/schemas/src/player/gamemodes/index.ts
index 6ec88940b..e794797fa 100644
--- a/packages/schemas/src/player/gamemodes/index.ts
+++ b/packages/schemas/src/player/gamemodes/index.ts
@@ -28,7 +28,7 @@ export * from "./uhc/index.js";
export * from "./vampirez/index.js";
export * from "./walls/index.js";
export * from "./warlords/index.js";
-export * from "./woolwars/index.js";
+export * from "./woolgames/index.js";
export * from "./pit/index.js";
export * from "./challenges/index.js";
export * from "./quests/index.js";
diff --git a/packages/schemas/src/player/gamemodes/megawalls/index.ts b/packages/schemas/src/player/gamemodes/megawalls/index.ts
index cf3b10abf..b3a6c548b 100644
--- a/packages/schemas/src/player/gamemodes/megawalls/index.ts
+++ b/packages/schemas/src/player/gamemodes/megawalls/index.ts
@@ -6,8 +6,8 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import { MegaWallsKit, MegaWallsOverall } from "./kit.js";
import type { APIData } from "@statsify/util";
@@ -40,9 +40,9 @@ export const MEGAWALLS_MODES = new GameModes([
{ api: "squid" },
{ api: "werewolf" },
{ api: "zombie" },
-]);
+] as const);
-export type MegaWallsModes = IGameModes;
+export type MegaWallsModes = ExtractGameModes;
export class MegaWalls {
@Field({ historical: { enabled: false } })
diff --git a/packages/schemas/src/player/gamemodes/murdermystery/index.ts b/packages/schemas/src/player/gamemodes/murdermystery/index.ts
index 38f5d35d2..d75246640 100644
--- a/packages/schemas/src/player/gamemodes/murdermystery/index.ts
+++ b/packages/schemas/src/player/gamemodes/murdermystery/index.ts
@@ -12,8 +12,8 @@ import {
InfectionMurderMysteryMode,
StandardMurderMysteryMode,
} from "./mode.js";
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import type { APIData } from "@statsify/util";
export const MURDER_MYSTERY_MODES = new GameModes([
@@ -27,9 +27,9 @@ export const MURDER_MYSTERY_MODES = new GameModes([
{ hypixel: "MURDER_INFECTION", formatted: "Infection" },
{ hypixel: "MURDER_ASSASSINS", formatted: "Assassins" },
{ hypixel: "MURDER_CLASSIC", formatted: "Classic" },
-]);
+] as const);
-export type MurderMysteryModes = IGameModes;
+export type MurderMysteryModes = ExtractGameModes;
export class MurderMystery {
@Field({ historical: { enabled: false } })
diff --git a/packages/schemas/src/player/gamemodes/paintball/index.ts b/packages/schemas/src/player/gamemodes/paintball/index.ts
index 08bec097b..e3dd0c393 100644
--- a/packages/schemas/src/player/gamemodes/paintball/index.ts
+++ b/packages/schemas/src/player/gamemodes/paintball/index.ts
@@ -6,8 +6,8 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import {
GamePrefix,
createPrefixProgression,
@@ -19,9 +19,9 @@ import { Progression } from "#progression";
import { ratio } from "@statsify/math";
import type { APIData } from "@statsify/util";
-export const PAINTBALL_MODES = new GameModes([{ api: "overall" }]);
+export const PAINTBALL_MODES = new GameModes([{ api: "overall" }] as const);
-export type PaintballModes = IGameModes;
+export type PaintballModes = ExtractGameModes;
const prefixes: GamePrefix[] = [
{ fmt: (n) => `§8[${n}]`, req: 0 },
diff --git a/packages/schemas/src/player/gamemodes/parkour/index.ts b/packages/schemas/src/player/gamemodes/parkour/index.ts
index ddda47fe5..6eb1f0bae 100644
--- a/packages/schemas/src/player/gamemodes/parkour/index.ts
+++ b/packages/schemas/src/player/gamemodes/parkour/index.ts
@@ -7,12 +7,12 @@
*/
import { type APIData, formatTime } from "@statsify/util";
+import { type ExtractGameModes, FormattedGame, GameModes } from "#game";
import { Field } from "#metadata";
-import { FormattedGame, GameModes, type IGameModes } from "#game";
-export const PARKOUR_MODES = new GameModes([{ api: "overall" }]);
+export const PARKOUR_MODES = new GameModes([{ api: "overall" }] as const);
-export type ParkourModes = IGameModes;
+export type ParkourModes = ExtractGameModes;
const fieldOptions = { sort: "ASC", formatter: formatTime, fieldName: "Time" };
const historical = { enabled: false };
@@ -124,7 +124,7 @@ export class Parkour {
public WARLORDS: number;
@Field({
- leaderboard: { ...fieldOptions, name: `${FormattedGame.WOOLWARS} Lobby` },
+ leaderboard: { ...fieldOptions, name: `${FormattedGame.WOOLGAMES} Lobby` },
historical,
})
public WOOLWARS: number;
diff --git a/packages/schemas/src/player/gamemodes/pit/index.ts b/packages/schemas/src/player/gamemodes/pit/index.ts
index eea05183c..3aa7ac08e 100644
--- a/packages/schemas/src/player/gamemodes/pit/index.ts
+++ b/packages/schemas/src/player/gamemodes/pit/index.ts
@@ -7,8 +7,8 @@
*/
import { type APIData, formatTime } from "@statsify/util";
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import { Progression } from "#progression";
import { add, ratio } from "@statsify/math";
import {
@@ -19,11 +19,9 @@ import {
getPrestigeReq,
} from "./util.js";
-export const PIT_MODES = new GameModes([
- { api: "overall", hypixel: "PIT", formatted: "Pit" },
-]);
+export const PIT_MODES = new GameModes([{ api: "overall", hypixel: "PIT", formatted: "Pit" }] as const);
-export type PitModes = IGameModes;
+export type PitModes = ExtractGameModes;
export class Pit {
@Field({
diff --git a/packages/schemas/src/player/gamemodes/quake/index.ts b/packages/schemas/src/player/gamemodes/quake/index.ts
index 28f9048d8..e2c44aa99 100644
--- a/packages/schemas/src/player/gamemodes/quake/index.ts
+++ b/packages/schemas/src/player/gamemodes/quake/index.ts
@@ -6,8 +6,8 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import {
GamePrefix,
createPrefixProgression,
@@ -23,9 +23,9 @@ export const QUAKE_MODES = new GameModes([
{ api: "overall" },
{ api: "solo", hypixel: "solo" },
{ api: "teams", hypixel: "teams" },
-]);
+] as const);
-export type QuakeModes = IGameModes;
+export type QuakeModes = ExtractGameModes;
const indexes = [
"zero",
diff --git a/packages/schemas/src/player/gamemodes/quests/index.ts b/packages/schemas/src/player/gamemodes/quests/index.ts
index e383fb1c5..8b0408f19 100644
--- a/packages/schemas/src/player/gamemodes/quests/index.ts
+++ b/packages/schemas/src/player/gamemodes/quests/index.ts
@@ -29,10 +29,10 @@ import {
VampireZQuests,
WallsQuests,
WarlordsQuests,
- WoolWarsQuests,
+ WoolGamesQuests,
} from "./modes/index.js";
+import { ExtractGameModes, FormattedGame, GameModes } from "#game";
import { Field } from "#metadata";
-import { FormattedGame, GameModes, IGameModes } from "#game";
import { QuestTime, createQuestsInstance } from "./util.js";
export const QUEST_MODES = new GameModes([
@@ -53,18 +53,15 @@ export const QUEST_MODES = new GameModes([
{ api: "SMASH_HEROES", formatted: removeFormatting(FormattedGame.SMASH_HEROES) },
{ api: "SPEED_UHC", formatted: removeFormatting(FormattedGame.SPEED_UHC) },
{ api: "TNT_GAMES", formatted: removeFormatting(FormattedGame.TNT_GAMES) },
- {
- api: "TURBO_KART_RACERS",
- formatted: removeFormatting(FormattedGame.TURBO_KART_RACERS),
- },
+ { api: "TURBO_KART_RACERS", formatted: removeFormatting(FormattedGame.TURBO_KART_RACERS) },
{ api: "UHC", formatted: removeFormatting(FormattedGame.UHC) },
{ api: "VAMPIREZ", formatted: removeFormatting(FormattedGame.VAMPIREZ) },
{ api: "WALLS", formatted: removeFormatting(FormattedGame.WALLS) },
{ api: "WARLORDS", formatted: removeFormatting(FormattedGame.WARLORDS) },
- { api: "WOOLWARS", formatted: removeFormatting(FormattedGame.WOOLWARS) },
-]);
+ { api: "WOOLGAMES", formatted: removeFormatting(FormattedGame.WOOLGAMES) },
+] as const);
-export type QuestModes = IGameModes;
+export type QuestModes = ExtractGameModes;
const questModes = {
ARCADE: ArcadeQuests,
@@ -88,7 +85,7 @@ const questModes = {
VAMPIREZ: VampireZQuests,
WALLS: WallsQuests,
WARLORDS: WarlordsQuests,
- WOOLWARS: WoolWarsQuests,
+ WOOLGAMES: WoolGamesQuests,
} as const;
export const DailyQuests = createQuestsInstance(QuestTime.Daily, questModes);
diff --git a/packages/schemas/src/player/gamemodes/quests/modes/index.ts b/packages/schemas/src/player/gamemodes/quests/modes/index.ts
index ef0c2ab1a..a6f4fe3e9 100644
--- a/packages/schemas/src/player/gamemodes/quests/modes/index.ts
+++ b/packages/schemas/src/player/gamemodes/quests/modes/index.ts
@@ -26,5 +26,5 @@ export * from "./uhc.js";
export * from "./vampirez.js";
export * from "./walls.js";
export * from "./warlords.js";
-export * from "./woolwars.js";
+export * from "./woolgames.js";
export * from "./speeduhc.js";
diff --git a/packages/schemas/src/player/gamemodes/quests/modes/woolwars.ts b/packages/schemas/src/player/gamemodes/quests/modes/woolgames.ts
similarity index 89%
rename from packages/schemas/src/player/gamemodes/quests/modes/woolwars.ts
rename to packages/schemas/src/player/gamemodes/quests/modes/woolgames.ts
index f747330f0..4206fc97e 100644
--- a/packages/schemas/src/player/gamemodes/quests/modes/woolwars.ts
+++ b/packages/schemas/src/player/gamemodes/quests/modes/woolgames.ts
@@ -9,8 +9,8 @@
import { FormattedGame } from "#game";
import { createGameModeQuests } from "../util.js";
-export const WoolWarsQuests = createGameModeQuests({
- game: FormattedGame.WOOLWARS,
+export const WoolGamesQuests = createGameModeQuests({
+ game: FormattedGame.WOOLGAMES,
daily: [
{ field: "wool_wars_daily_play", propertyKey: "firstPlayOfTheDay" },
{ field: "wool_wars_daily_wins", propertyKey: "winnerWinnerLambDinner" },
diff --git a/packages/schemas/src/player/gamemodes/skywars/index.ts b/packages/schemas/src/player/gamemodes/skywars/index.ts
index 173c4f7a1..8f1f40807 100644
--- a/packages/schemas/src/player/gamemodes/skywars/index.ts
+++ b/packages/schemas/src/player/gamemodes/skywars/index.ts
@@ -7,8 +7,8 @@
*/
import { ChallengesSkyWars, SkyWarsMode } from "./mode.js";
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import { Progression } from "#progression";
import { add } from "@statsify/math";
import { getFormattedLevel, getLevel, getLevelProgress, parseKit } from "./util.js";
@@ -33,9 +33,9 @@ export const SKYWARS_MODES = new GameModes([
{ hypixel: "teams_insane_tnt_madness", formatted: "TNT Madness Doubles" },
{ hypixel: "mega_normal", formatted: "Mega" },
{ hypixel: "mega_doubles", formatted: "Mega Doubles" },
-]);
+] as const);
-export type SkyWarsModes = IGameModes;
+export type SkyWarsModes = ExtractGameModes;
export class SkyWars {
@Field({
diff --git a/packages/schemas/src/player/gamemodes/smashheroes/index.ts b/packages/schemas/src/player/gamemodes/smashheroes/index.ts
index 2c5662972..2b3da8217 100644
--- a/packages/schemas/src/player/gamemodes/smashheroes/index.ts
+++ b/packages/schemas/src/player/gamemodes/smashheroes/index.ts
@@ -6,8 +6,8 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import { SmashHeroesKit, SmashHeroesMode } from "./mode.js";
import type { APIData } from "@statsify/util";
@@ -37,9 +37,9 @@ export const SMASH_HEROES_MODES = new GameModes([
{ hypixel: "1v1_normal", formatted: "1v1" },
{ hypixel: "friends_normal", formatted: "Friends" },
-]);
+] as const);
-export type SmashHeroesModes = IGameModes;
+export type SmashHeroesModes = ExtractGameModes;
enum SmashHeroesClass {
BOTMUN = "Botmon",
diff --git a/packages/schemas/src/player/gamemodes/speeduhc/index.ts b/packages/schemas/src/player/gamemodes/speeduhc/index.ts
index 808977251..1fac58f93 100644
--- a/packages/schemas/src/player/gamemodes/speeduhc/index.ts
+++ b/packages/schemas/src/player/gamemodes/speeduhc/index.ts
@@ -6,8 +6,8 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import { GamePrefix, createPrefixProgression } from "#prefixes";
import { Progression } from "#progression";
import { SpeedUHCMastery } from "./mastery.js";
@@ -30,14 +30,14 @@ export const SPEED_UHC_MODES = new GameModes([
{ api: "huntsman" },
{ api: "fortune" },
{ api: "vampirism" },
-]);
+] as const);
const prefixes: GamePrefix[] = titleScores.map((level) => ({
fmt: formatLevel,
req: level.req,
}));
-export type SpeedUHCModes = IGameModes;
+export type SpeedUHCModes = ExtractGameModes;
export class SpeedUHC {
@Field()
diff --git a/packages/schemas/src/player/gamemodes/tntgames/index.ts b/packages/schemas/src/player/gamemodes/tntgames/index.ts
index 673cc312f..7b805c044 100644
--- a/packages/schemas/src/player/gamemodes/tntgames/index.ts
+++ b/packages/schemas/src/player/gamemodes/tntgames/index.ts
@@ -7,8 +7,8 @@
*/
import { BowSpleef, PVPRun, TNTRun, TNTTag, Wizards } from "./mode.js";
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import type { APIData } from "@statsify/util";
export const TNT_GAMES_MODES = new GameModes([
@@ -18,9 +18,9 @@ export const TNT_GAMES_MODES = new GameModes([
{ hypixel: "TNTRUN", formatted: "TNT Run" },
{ hypixel: "BOWSPLEEF", formatted: "Bow Spleef" },
{ hypixel: "CAPTURE", formatted: "Wizards" },
-]);
+] as const);
-export type TNTGamesModes = IGameModes;
+export type TNTGamesModes = ExtractGameModes;
export class TNTGames {
@Field({ historical: { enabled: false } })
diff --git a/packages/schemas/src/player/gamemodes/turbokartracers/index.ts b/packages/schemas/src/player/gamemodes/turbokartracers/index.ts
index dcb23f4d6..7eb81f944 100644
--- a/packages/schemas/src/player/gamemodes/turbokartracers/index.ts
+++ b/packages/schemas/src/player/gamemodes/turbokartracers/index.ts
@@ -6,8 +6,8 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import {
GamePrefix,
createPrefixProgression,
@@ -18,9 +18,9 @@ import { Progression } from "#progression";
import { add, ratio } from "@statsify/math";
import type { APIData } from "@statsify/util";
-export const TURBO_KART_RACERS_MODES = new GameModes([{ api: "overall" }]);
+export const TURBO_KART_RACERS_MODES = new GameModes([{ api: "overall" }] as const);
-export type TurboKartRacersModes = IGameModes;
+export type TurboKartRacersModes = ExtractGameModes;
const prefixes: GamePrefix[] = [
{ fmt: (n) => `§8[${n}✪]`, req: 0 },
diff --git a/packages/schemas/src/player/gamemodes/uhc/index.ts b/packages/schemas/src/player/gamemodes/uhc/index.ts
index 66d657b74..202df759f 100644
--- a/packages/schemas/src/player/gamemodes/uhc/index.ts
+++ b/packages/schemas/src/player/gamemodes/uhc/index.ts
@@ -6,8 +6,8 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import { GamePrefix, createPrefixProgression } from "#prefixes";
import { Progression } from "#progression";
import { UHCMode } from "./mode.js";
@@ -21,14 +21,14 @@ export const UHC_MODES = new GameModes([
{ api: "overall" },
{ api: "solo", hypixel: "SOLO" },
{ api: "teams", hypixel: "TEAMS" },
-]);
+] as const);
const prefixes: GamePrefix[] = titleScores.map((level) => ({
fmt: formatLevel,
req: level.req,
}));
-export type UHCModes = IGameModes;
+export type UHCModes = ExtractGameModes;
export class UHC {
@Field()
diff --git a/packages/schemas/src/player/gamemodes/vampirez/index.ts b/packages/schemas/src/player/gamemodes/vampirez/index.ts
index 22281ecca..2c2485f13 100644
--- a/packages/schemas/src/player/gamemodes/vampirez/index.ts
+++ b/packages/schemas/src/player/gamemodes/vampirez/index.ts
@@ -6,14 +6,14 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import { VampireZHuman, VampireZVampire } from "./life.js";
import { add } from "@statsify/math";
import type { APIData } from "@statsify/util";
-export const VAMPIREZ_MODES = new GameModes([{ api: "human" }, { api: "vampire" }]);
-export type VampireZModes = IGameModes;
+export const VAMPIREZ_MODES = new GameModes([{ api: "human" }, { api: "vampire" }] as const);
+export type VampireZModes = ExtractGameModes;
export class VampireZ {
@Field({ historical: { enabled: false } })
diff --git a/packages/schemas/src/player/gamemodes/walls/index.ts b/packages/schemas/src/player/gamemodes/walls/index.ts
index 96cf7d848..f7a11dbf0 100644
--- a/packages/schemas/src/player/gamemodes/walls/index.ts
+++ b/packages/schemas/src/player/gamemodes/walls/index.ts
@@ -6,8 +6,8 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import {
GamePrefix,
createPrefixProgression,
@@ -19,9 +19,9 @@ import { Progression } from "#progression";
import { ratio } from "@statsify/math";
import type { APIData } from "@statsify/util";
-export const WALLS_MODES = new GameModes([{ api: "overall" }]);
+export const WALLS_MODES = new GameModes([{ api: "overall" }] as const);
-export type WallsModes = IGameModes;
+export type WallsModes = ExtractGameModes;
const prefixes: GamePrefix[] = [
{ fmt: (n) => `§8[${n}]`, req: 0 },
diff --git a/packages/schemas/src/player/gamemodes/warlords/index.ts b/packages/schemas/src/player/gamemodes/warlords/index.ts
index c038d31d7..082861357 100644
--- a/packages/schemas/src/player/gamemodes/warlords/index.ts
+++ b/packages/schemas/src/player/gamemodes/warlords/index.ts
@@ -6,8 +6,8 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import { WarlordsClass } from "./class.js";
import { add, ratio, sub } from "@statsify/math";
import type { APIData } from "@statsify/util";
@@ -19,9 +19,9 @@ export const WARLORDS_MODES = new GameModes([
{ hypixel: "ctf_mini", formatted: "CTF" },
{ hypixel: "domination", formatted: "Domination" },
{ hypixel: "team_deathmatch", formatted: "Deathmatch" },
-]);
+] as const);
-export type WarlordsModes = IGameModes;
+export type WarlordsModes = ExtractGameModes;
export class Warlords {
@Field()
diff --git a/packages/schemas/src/player/gamemodes/woolgames/capture-the-wool.ts b/packages/schemas/src/player/gamemodes/woolgames/capture-the-wool.ts
new file mode 100644
index 000000000..477c45511
--- /dev/null
+++ b/packages/schemas/src/player/gamemodes/woolgames/capture-the-wool.ts
@@ -0,0 +1,115 @@
+/**
+ * Copyright (c) Statsify
+ *
+ * This source code is licensed under the GNU GPL v3 license found in the
+ * LICENSE file in the root directory of this source tree.
+ * https://github.com/Statsify/statsify/blob/main/LICENSE
+ */
+
+import { type APIData, formatTime } from "@statsify/util";
+import { Field } from "#metadata";
+import { ratio } from "@statsify/math";
+
+export class CaptureTheWool {
+ @Field()
+ public wins: number;
+
+ @Field()
+ public losses: number;
+
+ @Field()
+ public wlr: number;
+
+ @Field()
+ public draws: number;
+
+ @Field()
+ public kills: number;
+
+ @Field()
+ public deaths: number;
+
+ @Field()
+ public kdr: number;
+
+ @Field()
+ public assists: number;
+
+ @Field()
+ public woolCaptured: number;
+
+ @Field()
+ public woolPickedUp: number;
+
+ @Field({
+ leaderboard: {
+ sort: "ASC",
+ formatter: formatTime,
+ additionalFields: ["this.wins"],
+ },
+ historical: { enabled: false },
+ })
+ public fastestWin: number;
+
+ @Field({
+ leaderboard: {
+ sort: "ASC",
+ formatter: formatTime,
+ additionalFields: ["this.woolCaptured"],
+ },
+ historical: { enabled: false },
+ })
+ public fastestWoolCapture: number;
+
+ @Field({
+ leaderboard: { formatter: formatTime },
+ historical: { enabled: false },
+ })
+ public longestGame: number;
+
+ @Field({ leaderboard: { additionalFields: ["this.goldSpent"] } })
+ public goldEarned: number;
+
+ @Field({ leaderboard: { additionalFields: ["this.goldEarned"] } })
+ public goldSpent: number;
+
+ @Field({ leaderboard: { additionalFields: ["this.deathsToWoolHolder"] } })
+ public killsOnWoolHolder: number;
+
+ @Field({ leaderboard: { additionalFields: ["this.killsOnWoolHolder"] } })
+ public deathsToWoolHolder: number;
+
+ @Field({ leaderboard: { additionalFields: ["this.deathsAsWoolHolder"] } })
+ public killsAsWoolHolder: number;
+
+ @Field({ leaderboard: { additionalFields: ["this.killsAsWoolHolder"] } })
+ public deathsAsWoolHolder: number;
+
+ public constructor(data: APIData = {}) {
+ this.wins = data.participated_wins;
+ this.losses = data.participated_losses;
+ this.wlr = ratio(this.wins, this.losses);
+ this.draws = data.participated_draws;
+
+ this.kills = data.kills;
+ this.deaths = data.deaths;
+ this.kdr = ratio(this.kills, this.deaths);
+ this.assists = data.assists;
+
+ this.woolCaptured = data.wools_captured;
+ this.woolPickedUp = data.wools_stolen;
+
+ this.longestGame = (data.longest_game ?? 0) * 1000;
+ this.fastestWin = (data.fastest_win ?? 0) * 1000;
+ this.fastestWoolCapture = (data.fastest_wool_capture ?? 0) * 1000;
+
+ this.goldEarned = data.gold_earned;
+ this.goldSpent = Math.abs(data.gold_spent ?? 0);
+
+ this.killsOnWoolHolder = data.kills_on_woolholder;
+ this.deathsToWoolHolder = data.deaths_to_woolholder;
+
+ this.killsAsWoolHolder = data.kills_with_wool;
+ this.deathsAsWoolHolder = data.deaths_with_wool;
+ }
+}
diff --git a/packages/schemas/src/player/gamemodes/woolwars/index.ts b/packages/schemas/src/player/gamemodes/woolgames/index.ts
similarity index 53%
rename from packages/schemas/src/player/gamemodes/woolwars/index.ts
rename to packages/schemas/src/player/gamemodes/woolgames/index.ts
index ba462e89b..75d9962de 100644
--- a/packages/schemas/src/player/gamemodes/woolwars/index.ts
+++ b/packages/schemas/src/player/gamemodes/woolgames/index.ts
@@ -6,27 +6,38 @@
* https://github.com/Statsify/statsify/blob/main/LICENSE
*/
+import { type APIData, formatTime } from "@statsify/util";
+import { CaptureTheWool } from "./capture-the-wool.js";
+import { type ExtractGameModes, GameModes } from "#game";
import { Field } from "#metadata";
-import { GameModes, type IGameModes } from "#game";
import { Progression } from "#progression";
-import { WoolWarsClass, WoolWarsOverall } from "./class.js";
+import { SheepWars } from "./sheepwars.js";
+import { WoolWars } from "./woolwars.js";
import { getExpReq, getFormattedLevel, getLevel } from "./util.js";
-import type { APIData } from "@statsify/util";
-
-export const WOOLWARS_MODES = new GameModes([
- { api: "overall" },
- { api: "tank" },
- { api: "archer" },
- { api: "builder" },
- { api: "swordsman" },
- { api: "engineer" },
- { api: "golem" },
- { api: "assault" },
-]);
-
-export type WoolWarsModes = IGameModes;
-
-export class WoolWars {
+
+export const WOOLGAMES_MODES = new GameModes([
+ {
+ api: "woolwars",
+ formatted: "Wool Wars",
+ hypixel: "wool_wars_two_four",
+ submodes: [
+ { api: "overall" },
+ { api: "tank" },
+ { api: "archer" },
+ { api: "builder" },
+ { api: "swordsman" },
+ { api: "engineer" },
+ { api: "golem" },
+ { api: "assault" },
+ ],
+ },
+ { api: "sheepwars", formatted: "Sheep Wars", hypixel: "sheep_wars_two_six" },
+ { api: "captureTheWool", hypixel: "capture_the_wool_two_twenty" },
+] as const);
+
+export type WoolGamesModes = ExtractGameModes;
+
+export class WoolGames {
@Field({ historical: { enabled: false } })
public coins: number;
@@ -61,29 +72,17 @@ export class WoolWars {
@Field()
public nextLevelFormatted: string;
- @Field()
- public overall: WoolWarsOverall;
-
- @Field()
- public tank: WoolWarsClass;
-
- @Field()
- public archer: WoolWarsClass;
-
- @Field()
- public builder: WoolWarsClass;
-
- @Field()
- public swordsman: WoolWarsClass;
+ @Field({ leaderboard: { formatter: formatTime }, historical: { enabled: false } })
+ public playtime: number;
- @Field()
- public engineer: WoolWarsClass;
+ @Field({ leaderboard: { name: "WoolWars" } })
+ public woolwars: WoolWars;
- @Field()
- public golem: WoolWarsClass;
+ @Field({ leaderboard: { name: "SheepWars" } })
+ public sheepwars: SheepWars;
@Field()
- public assault: WoolWarsClass;
+ public captureTheWool: CaptureTheWool;
public constructor(data: APIData) {
this.coins = data.coins;
@@ -102,16 +101,14 @@ export class WoolWars {
this.progression = new Progression(exp, getExpReq(Math.floor(this.level)));
- this.overall = new WoolWarsOverall(data.wool_wars?.stats);
+ this.playtime = (data.playtime ?? 0) * 1000;
- this.tank = new WoolWarsClass(data.wool_wars?.stats?.classes?.tank);
- this.archer = new WoolWarsClass(data.wool_wars?.stats?.classes?.archer);
- this.builder = new WoolWarsClass(data.wool_wars?.stats?.classes?.builder);
- this.swordsman = new WoolWarsClass(data.wool_wars?.stats?.classes?.swordsman);
- this.engineer = new WoolWarsClass(data.wool_wars?.stats?.classes?.engineer);
- this.golem = new WoolWarsClass(data.wool_wars?.stats?.classes?.golem);
- this.assault = new WoolWarsClass(data.wool_wars?.stats?.classes?.assault);
+ this.woolwars = new WoolWars(data.wool_wars);
+ this.sheepwars = new SheepWars(data.sheep_wars);
+ this.captureTheWool = new CaptureTheWool(data.capture_the_wool?.stats);
}
}
-export * from "./class.js";
+export * from "./woolwars.js";
+export * from "./sheepwars.js";
+export * from "./capture-the-wool.js";
diff --git a/packages/schemas/src/player/gamemodes/woolgames/sheepwars.ts b/packages/schemas/src/player/gamemodes/woolgames/sheepwars.ts
new file mode 100644
index 000000000..64f3bacd6
--- /dev/null
+++ b/packages/schemas/src/player/gamemodes/woolgames/sheepwars.ts
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) Statsify
+ *
+ * This source code is licensed under the GNU GPL v3 license found in the
+ * LICENSE file in the root directory of this source tree.
+ * https://github.com/Statsify/statsify/blob/main/LICENSE
+ */
+
+import { type APIData } from "@statsify/util";
+import { Field } from "#metadata";
+import { ratio } from "@statsify/math";
+
+export class SheepWars {
+ @Field()
+ public gamesPlayed: number;
+
+ @Field()
+ public wins: number;
+
+ @Field()
+ public losses: number;
+
+ @Field()
+ public wlr: number;
+
+ @Field()
+ public kills: number;
+
+ @Field()
+ public deaths: number;
+
+ @Field()
+ public kdr: number;
+
+ @Field()
+ public sheepThrown: number;
+
+ @Field()
+ public magicWool: number;
+
+ @Field({ store: { default: "none" } })
+ public kit: string;
+
+ public constructor(data: APIData = {}) {
+ this.gamesPlayed = data.stats?.games_played;
+ this.wins = data.stats?.wins;
+ this.losses = data.stats?.losses;
+ this.wlr = ratio(this.wins, this.losses);
+
+ this.kills = data.stats?.kills;
+ this.deaths = data.stats?.deaths;
+ this.kdr = ratio(this.kills, this.deaths);
+
+ this.sheepThrown = data.stats?.sheep_thrown;
+ this.magicWool = data.stats?.magic_wool_hit;
+
+ this.kit = data.default_kit;
+ }
+}
diff --git a/packages/schemas/src/player/gamemodes/woolwars/util.ts b/packages/schemas/src/player/gamemodes/woolgames/util.ts
similarity index 100%
rename from packages/schemas/src/player/gamemodes/woolwars/util.ts
rename to packages/schemas/src/player/gamemodes/woolgames/util.ts
diff --git a/packages/schemas/src/player/gamemodes/woolwars/class.ts b/packages/schemas/src/player/gamemodes/woolgames/woolwars.ts
similarity index 59%
rename from packages/schemas/src/player/gamemodes/woolwars/class.ts
rename to packages/schemas/src/player/gamemodes/woolgames/woolwars.ts
index 7c10cb57e..055f4f12d 100644
--- a/packages/schemas/src/player/gamemodes/woolwars/class.ts
+++ b/packages/schemas/src/player/gamemodes/woolgames/woolwars.ts
@@ -66,3 +66,44 @@ export class WoolWarsOverall extends WoolWarsClass {
this.wlr = ratio(this.wins, this.losses);
}
}
+
+export class WoolWars {
+ @Field()
+ public overall: WoolWarsOverall;
+
+ @Field()
+ public tank: WoolWarsClass;
+
+ @Field()
+ public archer: WoolWarsClass;
+
+ @Field()
+ public builder: WoolWarsClass;
+
+ @Field()
+ public swordsman: WoolWarsClass;
+
+ @Field()
+ public engineer: WoolWarsClass;
+
+ @Field()
+ public golem: WoolWarsClass;
+
+ @Field()
+ public assault: WoolWarsClass;
+
+ @Field({ store: { default: "none" } })
+ public class: string;
+
+ public constructor(data: APIData = {}) {
+ this.overall = new WoolWarsOverall(data.stats);
+ this.tank = new WoolWarsClass(data.stats?.classes?.tank);
+ this.archer = new WoolWarsClass(data.stats?.classes?.archer);
+ this.builder = new WoolWarsClass(data.stats?.classes?.builder);
+ this.swordsman = new WoolWarsClass(data.stats?.classes?.swordsman);
+ this.engineer = new WoolWarsClass(data.stats?.classes?.engineer);
+ this.golem = new WoolWarsClass(data.stats?.classes?.golem);
+ this.assault = new WoolWarsClass(data.stats?.classes?.assault);
+ this.class = data.selected_class;
+ }
+}
diff --git a/packages/schemas/src/player/stats.ts b/packages/schemas/src/player/stats.ts
index 4a4cbec9e..0d6141db9 100644
--- a/packages/schemas/src/player/stats.ts
+++ b/packages/schemas/src/player/stats.ts
@@ -32,7 +32,7 @@ import {
VampireZ,
Walls,
Warlords,
- WoolWars,
+ WoolGames,
} from "./gamemodes/index.js";
import { Field } from "#metadata";
import { FormattedGame } from "#game";
@@ -197,11 +197,11 @@ export class PlayerStats {
@Field({
leaderboard: {
- fieldName: FormattedGame.WOOLWARS,
- extraDisplay: "this.woolwars.levelFormatted",
+ fieldName: FormattedGame.WOOLGAMES,
+ extraDisplay: "this.woolgames.levelFormatted",
},
})
- public woolwars: WoolWars;
+ public woolgames: WoolGames;
public constructor(data: APIData = {}) {
const achievements = data?.achievements ?? {};
@@ -233,6 +233,6 @@ export class PlayerStats {
this.vampirez = new VampireZ(stats.VampireZ ?? {}, legacy);
this.walls = new Walls(stats.Walls ?? {}, legacy);
this.warlords = new Warlords(stats.Battleground ?? {});
- this.woolwars = new WoolWars(stats.WoolGames ?? {});
+ this.woolgames = new WoolGames(stats.WoolGames ?? {});
}
}