From bdfa9cb7236acc83a08744ad06389aa12d06f8d3 Mon Sep 17 00:00:00 2001 From: Flash303 Date: Sat, 17 Oct 2026 20:26:02 +0200 Subject: [PATCH 1/3] feat: rename labymod -> labyclient --- README.md | 2 +- frontend/app/core/lib/theme-colors.ts | 2 +- frontend/app/locales/de.json | 15 ++++++----- frontend/app/locales/en.json | 15 ++++++----- frontend/app/locales/es.json | 15 ++++++----- frontend/app/locales/fr.json | 15 ++++++----- frontend/app/locales/it.json | 15 ++++++----- frontend/app/locales/ja.json | 15 ++++++----- frontend/app/locales/ko.json | 15 ++++++----- frontend/app/locales/nl.json | 15 ++++++----- frontend/app/locales/pl.json | 15 ++++++----- frontend/app/locales/pt.json | 15 ++++++----- frontend/app/locales/ru.json | 15 ++++++----- frontend/app/locales/zh-CN.json | 15 ++++++----- .../components/SelectedServersTags.tsx | 7 +++-- .../home/components/ServerListFilters.tsx | 10 +++---- frontend/app/pages/home/index.tsx | 6 ++--- .../components/ServerDetailHeader.tsx | 4 +-- .../components/ServerSidebar.tsx | 6 ++--- .../server-detail/hooks/useServerData.ts | 2 +- frontend/app/pages/server-detail/types.ts | 4 +-- frontend/app/routes.ts | 4 +-- .../{labymodManifest.ts => labyManifest.ts} | 0 frontend/app/routes/labyServers.ts | 26 ------------------ frontend/app/routes/lunarServers.ts | 27 ------------------- 25 files changed, 132 insertions(+), 148 deletions(-) rename frontend/app/routes/{labymodManifest.ts => labyManifest.ts} (100%) delete mode 100644 frontend/app/routes/labyServers.ts delete mode 100644 frontend/app/routes/lunarServers.ts diff --git a/README.md b/README.md index b8200db..e62cee9 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Minecraft Stats is a web platform that allows users to visualize the evolution o * **Precision Tracking:** High-performance, ultra-smooth player count charts using [uPlot](https://github.com/leeoniya/uPlot). * **Custom Alerts:** Configure personalized notifications (e.g., when a server goes offline or player counts exceed/drop below a threshold). -* **Lunar & LabyMod Integration:** Automatically detects and displays **Lunar Client** and **LabyMod** servers, including their custom backgrounds, icons, and specific manifest information directly on the server details page. +* **Lunar & LabyClient Integration:** Automatically detects and displays **Lunar Client** and **LabyClient** servers, including their custom backgrounds, icons, and specific manifest information directly on the server details page. * **MOTD Preview:** Full support for rendering Minecraft Server MOTDs with their original colors and formatting. ## 🚀 Tech Stack diff --git a/frontend/app/core/lib/theme-colors.ts b/frontend/app/core/lib/theme-colors.ts index 8e53b2b..2b77c6b 100644 --- a/frontend/app/core/lib/theme-colors.ts +++ b/frontend/app/core/lib/theme-colors.ts @@ -71,7 +71,7 @@ export function lunarLogoClass(partnered: boolean | undefined): string { return partnered ? BRAND_COLORS.lunarPartnered : BRAND_COLORS.lunarDefault; } -/** Reusable class pair for the LabyMod logo across cards/search/tags. */ +/** Reusable class pair for the LabyClient logo across cards/search/tags. */ export function labyLogoClass(partnered: boolean | undefined): string { return partnered ? BRAND_COLORS.labyPartnered : "text-foreground"; } diff --git a/frontend/app/locales/de.json b/frontend/app/locales/de.json index 0acd523..874f814 100644 --- a/frontend/app/locales/de.json +++ b/frontend/app/locales/de.json @@ -104,11 +104,12 @@ "launcher": "Launcher", "allLaunchers": "Alle Launcher", "lunar": "Lunar Client", - "labymod": "LabyMod", + "labymod": "LabyClient", "filterSort": "Filtern & Sortieren", "reset": "Zurücksetzen", "sortAscTitle": "Aufsteigende Reihenfolge", - "sortDescTitle": "Absteigende Reihenfolge" + "sortDescTitle": "Absteigende Reihenfolge", + "laby": "LabyClient" } }, "hero": { @@ -144,14 +145,14 @@ "offlineMotdNotice": "Dieser Server ist derzeit offline, der zuletzt gespeicherte Status wird angezeigt", "sidebar": { "socials": "Soziale Netzwerke", - "labyEmpty": "Dieser Server ist bei LabyMod registriert, hat aber seine Informationen noch nicht ausgefüllt.", + "labyEmpty": "Dieser Server ist bei LabyClient registriert, hat aber seine Informationen noch nicht ausgefüllt.", "lunarEmpty": "Dieser Server ist bei Lunar Client registriert, hat aber seine Informationen noch nicht ausgefüllt.", - "labyPartner": "Offizieller LabyMod-Partner", + "labyPartner": "Offizieller LabyClient-Partner", "lunarPartner": "Offizieller Lunar-Partner", "playerStats": "Spieler-Statistiken", "searchPlayer": "Suche nach einem Spieler...", "gamemodes": "Spielmodi", - "labymodInfo": "LabyMod-Info", + "labymodInfo": "LabyClient-Info", "lunarInfo": "Lunar Client-Info", "website": "Webseite", "web": "Webseite", @@ -160,7 +161,9 @@ "minecraftVersions": "Minecraft-Versionen", "trailer": "Trailer-Video", "showMore": "Zeige {count} mehr", - "showLess": "Weniger anzeigen" + "showLess": "Weniger anzeigen", + "labyInfo": "LabyClient-Info", + "labyServerList": "LabyClient-Serverliste" } }, "comparison": { diff --git a/frontend/app/locales/en.json b/frontend/app/locales/en.json index 9826635..6461056 100644 --- a/frontend/app/locales/en.json +++ b/frontend/app/locales/en.json @@ -104,11 +104,12 @@ "launcher": "Launcher", "allLaunchers": "All Launchers", "lunar": "Lunar Client", - "labymod": "LabyMod", + "labymod": "LabyClient", "filterSort": "Filter & Sort", "reset": "Reset", "sortAscTitle": "Ascending order", - "sortDescTitle": "Descending order" + "sortDescTitle": "Descending order", + "laby": "LabyClient" } }, "hero": { @@ -144,14 +145,14 @@ "offlineMotdNotice": "This server is currently offline, showing the last saved status", "sidebar": { "socials": "Social Networks", - "labyEmpty": "This server is registered on LabyMod but hasn't filled in its information yet.", + "labyEmpty": "This server is registered on LabyClient but hasn't filled in its information yet.", "lunarEmpty": "This server is registered on Lunar Client but hasn't filled in its information yet.", - "labyPartner": "Official LabyMod Partner", + "labyPartner": "Official LabyClient Partner", "lunarPartner": "Official Lunar Partner", "playerStats": "Player Statistics", "searchPlayer": "Search for a player...", "gamemodes": "Gamemodes", - "labymodInfo": "LabyMod Info", + "labymodInfo": "LabyClient Info", "lunarInfo": "Lunar Client Info", "website": "Website", "web": "Website", @@ -160,7 +161,9 @@ "minecraftVersions": "Minecraft Versions", "trailer": "Trailer Video", "showMore": "Show {count} more", - "showLess": "Show less" + "showLess": "Show less", + "labyInfo": "LabyClient Info", + "labyServerList": "LabyClient Server List" } }, "comparison": { diff --git a/frontend/app/locales/es.json b/frontend/app/locales/es.json index 4ad1390..3aa903a 100644 --- a/frontend/app/locales/es.json +++ b/frontend/app/locales/es.json @@ -104,11 +104,12 @@ "launcher": "Lanzador", "allLaunchers": "Todos los lanzadores", "lunar": "Lunar Client", - "labymod": "LabyMod", + "labymod": "LabyClient", "filterSort": "Filtrar y Ordenar", "reset": "Restablecer", "sortAscTitle": "Orden ascendente", - "sortDescTitle": "Orden descendente" + "sortDescTitle": "Orden descendente", + "laby": "LabyClient" } }, "hero": { @@ -144,14 +145,14 @@ "offlineMotdNotice": "Este servidor está fuera de línea, se muestra el último estado registrado", "sidebar": { "socials": "Redes sociales", - "labyEmpty": "Este servidor está registrado en LabyMod pero aún no ha completado su información.", + "labyEmpty": "Este servidor está registrado en LabyClient pero aún no ha completado su información.", "lunarEmpty": "Este servidor está registrado en Lunar Client pero aún no ha completado su información.", - "labyPartner": "Socio oficial de LabyMod", + "labyPartner": "Socio oficial de LabyClient", "lunarPartner": "Socio oficial de Lunar", "playerStats": "Estadísticas de jugadores", "searchPlayer": "Buscar un jugador...", "gamemodes": "Modos de juego", - "labymodInfo": "Información de LabyMod", + "labymodInfo": "Información de LabyClient", "lunarInfo": "Información de Lunar Client", "website": "Sitio web", "web": "Web", @@ -160,7 +161,9 @@ "minecraftVersions": "Versiones de Minecraft", "trailer": "Tráiler de video", "showMore": "Mostrar {count} más", - "showLess": "Mostrar menos" + "showLess": "Mostrar menos", + "labyInfo": "Información de LabyClient", + "labyServerList": "Lista de servidores LabyClient" } }, "comparison": { diff --git a/frontend/app/locales/fr.json b/frontend/app/locales/fr.json index 83a73ed..d8efd9c 100644 --- a/frontend/app/locales/fr.json +++ b/frontend/app/locales/fr.json @@ -104,11 +104,12 @@ "launcher": "Launcher", "allLaunchers": "Tous les launchers", "lunar": "Lunar Client", - "labymod": "LabyMod", + "labymod": "LabyClient", "filterSort": "Filtres & Tri", "reset": "Réinitialiser", "sortAscTitle": "Ordre croissant", - "sortDescTitle": "Ordre décroissant" + "sortDescTitle": "Ordre décroissant", + "laby": "LabyClient" } }, "hero": { @@ -144,14 +145,14 @@ "offlineMotdNotice": "Le serveur est actuellement hors ligne, il s'agit du dernier statut enregistré", "sidebar": { "socials": "Réseaux Sociaux", - "labyEmpty": "Ce serveur est référencé sur LabyMod mais n'a pas encore renseigné ses informations.", + "labyEmpty": "Ce serveur est référencé sur LabyClient mais n'a pas encore renseigné ses informations.", "lunarEmpty": "Ce serveur est référencé sur Lunar Client mais n'a pas encore renseigné ses informations.", - "labyPartner": "Partenaire officiel LabyMod", + "labyPartner": "Partenaire officiel LabyClient", "lunarPartner": "Partenaire officiel Lunar Client", "playerStats": "Statistiques Joueurs", "searchPlayer": "Rechercher un joueur...", "gamemodes": "Modes de jeu", - "labymodInfo": "Infos LabyMod", + "labymodInfo": "Infos LabyClient", "lunarInfo": "Infos Lunar Client", "website": "Site Web", "web": "Site Web", @@ -160,7 +161,9 @@ "minecraftVersions": "Versions Minecraft", "trailer": "Trailer Vidéo", "showMore": "Voir {count} autres", - "showLess": "Voir moins" + "showLess": "Voir moins", + "labyInfo": "Infos LabyClient", + "labyServerList": "Liste des serveurs LabyClient" } }, "comparison": { diff --git a/frontend/app/locales/it.json b/frontend/app/locales/it.json index 7f7a8fd..4523e46 100644 --- a/frontend/app/locales/it.json +++ b/frontend/app/locales/it.json @@ -104,11 +104,12 @@ "launcher": "Launcher", "allLaunchers": "Tutti i Launcher", "lunar": "Lunar Client", - "labymod": "LabyMod", + "labymod": "LabyClient", "filterSort": "Filtra e ordina", "reset": "Reimposta", "sortAscTitle": "Ordine crescente", - "sortDescTitle": "Ordine decrescente" + "sortDescTitle": "Ordine decrescente", + "laby": "LabyClient" } }, "hero": { @@ -144,14 +145,14 @@ "offlineMotdNotice": "Questo server è attualmente offline, viene mostrato l'ultimo stato salvato", "sidebar": { "socials": "Reti sociali", - "labyEmpty": "Questo server è registrato su LabyMod ma non ha ancora inserito le sue informazioni.", + "labyEmpty": "Questo server è registrato su LabyClient ma non ha ancora inserito le sue informazioni.", "lunarEmpty": "Questo server è registrato su Lunar Client ma non ha ancora inserito le sue informazioni.", - "labyPartner": "Partner Ufficiale LabyMod", + "labyPartner": "Partner Ufficiale LabyClient", "lunarPartner": "Partner Ufficiale Lunar", "playerStats": "Statistiche Giocatori", "searchPlayer": "Cerca un giocatore...", "gamemodes": "Modalità di gioco", - "labymodInfo": "Informazioni LabyMod", + "labymodInfo": "Informazioni LabyClient", "lunarInfo": "Informazioni Lunar Client", "website": "Sito web", "web": "Sito web", @@ -160,7 +161,9 @@ "minecraftVersions": "Versioni di Minecraft", "trailer": "Video trailer", "showMore": "Mostra altri {count}", - "showLess": "Mostra meno" + "showLess": "Mostra meno", + "labyInfo": "Informazioni LabyClient", + "labyServerList": "Lista server LabyClient" } }, "comparison": { diff --git a/frontend/app/locales/ja.json b/frontend/app/locales/ja.json index 9b5aff1..e135fbb 100644 --- a/frontend/app/locales/ja.json +++ b/frontend/app/locales/ja.json @@ -104,11 +104,12 @@ "launcher": "ランチャー", "allLaunchers": "すべてのランチャー", "lunar": "Lunar Client", - "labymod": "LabyMod", + "labymod": "LabyClient", "filterSort": "フィルター&並び替え", "reset": "リセット", "sortAscTitle": "昇順", - "sortDescTitle": "降順" + "sortDescTitle": "降順", + "laby": "LabyClient" } }, "hero": { @@ -144,14 +145,14 @@ "offlineMotdNotice": "このサーバーは現在オフラインのため、最後に保存されたステータスを表示しています", "sidebar": { "socials": "ソーシャルネットワーク", - "labyEmpty": "このサーバーはLabyModに登録されていますが、情報はまだ入力されていません。", + "labyEmpty": "このサーバーはLabyClientに登録されていますが、情報はまだ入力されていません。", "lunarEmpty": "このサーバーはLunar Clientに登録されていますが、情報はまだ入力されていません。", - "labyPartner": "LabyMod公式パートナー", + "labyPartner": "LabyClient公式パートナー", "lunarPartner": "Lunar公式パートナー", "playerStats": "プレイヤー統計", "searchPlayer": "プレイヤーを検索...", "gamemodes": "ゲームモード", - "labymodInfo": "LabyMod情報", + "labymodInfo": "LabyClient情報", "lunarInfo": "Lunar Client情報", "website": "ウェブサイト", "web": "ウェブサイト", @@ -160,7 +161,9 @@ "minecraftVersions": "Minecraftバージョン", "trailer": "トレイラー動画", "showMore": "さらに {count} 件表示", - "showLess": "表示を減らす" + "showLess": "表示を減らす", + "labyInfo": "LabyClient情報", + "labyServerList": "LabyClient サーバーリスト" } }, "comparison": { diff --git a/frontend/app/locales/ko.json b/frontend/app/locales/ko.json index 7abc929..c181f45 100644 --- a/frontend/app/locales/ko.json +++ b/frontend/app/locales/ko.json @@ -104,11 +104,12 @@ "launcher": "런처", "allLaunchers": "모든 런처", "lunar": "Lunar Client", - "labymod": "LabyMod", + "labymod": "LabyClient", "filterSort": "필터 및 정렬", "reset": "초기화", "sortAscTitle": "오름차순", - "sortDescTitle": "내림차순" + "sortDescTitle": "내림차순", + "laby": "LabyClient" } }, "hero": { @@ -144,14 +145,14 @@ "offlineMotdNotice": "이 서버는 현재 오프라인 상태이므로 마지막으로 저장된 상태를 표시합니다", "sidebar": { "socials": "소셜 네트워크", - "labyEmpty": "이 서버는 LabyMod에 등록되어 있지만 아직 정보가 입력되지 않았습니다.", + "labyEmpty": "이 서버는 LabyClient에 등록되어 있지만 아직 정보가 입력되지 않았습니다.", "lunarEmpty": "이 서버는 Lunar Client에 등록되어 있지만 아직 정보가 입력되지 않았습니다.", - "labyPartner": "공식 LabyMod 파트너", + "labyPartner": "공식 LabyClient 파트너", "lunarPartner": "공식 Lunar 파트너", "playerStats": "플레이어 통계", "searchPlayer": "플레이어 검색...", "gamemodes": "게임 모드", - "labymodInfo": "LabyMod 정보", + "labymodInfo": "LabyClient 정보", "lunarInfo": "Lunar Client 정보", "website": "웹사이트", "web": "웹사이트", @@ -160,7 +161,9 @@ "minecraftVersions": "마인크래프트 버전", "trailer": "트레일러 영상", "showMore": "{count}개 더 보기", - "showLess": "간략히 보기" + "showLess": "간략히 보기", + "labyInfo": "LabyClient 정보", + "labyServerList": "LabyClient 서버 목록" } }, "comparison": { diff --git a/frontend/app/locales/nl.json b/frontend/app/locales/nl.json index 372e633..b81946f 100644 --- a/frontend/app/locales/nl.json +++ b/frontend/app/locales/nl.json @@ -104,11 +104,12 @@ "launcher": "Launcher", "allLaunchers": "Alle Launchers", "lunar": "Lunar Client", - "labymod": "LabyMod", + "labymod": "LabyClient", "filterSort": "Filter & Sorteer", "reset": "Resetten", "sortAscTitle": "Oplopende volgorde", - "sortDescTitle": "Aflopende volgorde" + "sortDescTitle": "Aflopende volgorde", + "laby": "LabyClient" } }, "hero": { @@ -144,14 +145,14 @@ "offlineMotdNotice": "Deze server is momenteel offline, de laatst opgeslagen status wordt weergegeven", "sidebar": { "socials": "Sociale netwerken", - "labyEmpty": "Deze server is geregistreerd op LabyMod maar heeft zijn informatie nog niet ingevuld.", + "labyEmpty": "Deze server is geregistreerd op LabyClient maar heeft zijn informatie nog niet ingevuld.", "lunarEmpty": "Deze server is geregistreerd op Lunar Client maar heeft zijn informatie nog niet ingevuld.", - "labyPartner": "Officiële LabyMod Partner", + "labyPartner": "Officiële LabyClient Partner", "lunarPartner": "Officiële Lunar Partner", "playerStats": "Spelerstatistieken", "searchPlayer": "Zoek naar een speler...", "gamemodes": "Gamemodes", - "labymodInfo": "LabyMod Info", + "labymodInfo": "LabyClient Info", "lunarInfo": "Lunar Client Info", "website": "Website", "web": "Website", @@ -160,7 +161,9 @@ "minecraftVersions": "Minecraft-versies", "trailer": "Trailervideo", "showMore": "Toon {count} meer", - "showLess": "Toon minder" + "showLess": "Toon minder", + "labyInfo": "LabyClient Info", + "labyServerList": "LabyClient Serverlijst" } }, "comparison": { diff --git a/frontend/app/locales/pl.json b/frontend/app/locales/pl.json index fb9026b..9994869 100644 --- a/frontend/app/locales/pl.json +++ b/frontend/app/locales/pl.json @@ -104,11 +104,12 @@ "launcher": "Launcher", "allLaunchers": "Wszystkie Launchery", "lunar": "Lunar Client", - "labymod": "LabyMod", + "labymod": "LabyClient", "filterSort": "Filtruj i Sortuj", "reset": "Zresetuj", "sortAscTitle": "Kolejność rosnąca", - "sortDescTitle": "Kolejność malejąca" + "sortDescTitle": "Kolejność malejąca", + "laby": "LabyClient" } }, "hero": { @@ -144,14 +145,14 @@ "offlineMotdNotice": "Ten serwer jest obecnie offline, wyświetlono ostatni zapisany status", "sidebar": { "socials": "Media społecznościowe", - "labyEmpty": "Ten serwer jest zarejestrowany w LabyMod, ale nie uzupełnił jeszcze swoich informacji.", + "labyEmpty": "Ten serwer jest zarejestrowany w LabyClient, ale nie uzupełnił jeszcze swoich informacji.", "lunarEmpty": "Ten serwer jest zarejestrowany w Lunar Client, ale nie uzupełnił jeszcze swoich informacji.", - "labyPartner": "Oficjalny Partner LabyMod", + "labyPartner": "Oficjalny Partner LabyClient", "lunarPartner": "Oficjalny Partner Lunar", "playerStats": "Statystyki Graczy", "searchPlayer": "Szukaj gracza...", "gamemodes": "Tryby Gry", - "labymodInfo": "Informacje LabyMod", + "labymodInfo": "Informacje LabyClient", "lunarInfo": "Informacje Lunar Client", "website": "Strona WWW", "web": "Strona WWW", @@ -160,7 +161,9 @@ "minecraftVersions": "Wersje Minecraft", "trailer": "Zwiastun", "showMore": "Pokaż {count} więcej", - "showLess": "Pokaż mniej" + "showLess": "Pokaż mniej", + "labyInfo": "Informacje LabyClient", + "labyServerList": "Lista serwerów LabyClient" } }, "comparison": { diff --git a/frontend/app/locales/pt.json b/frontend/app/locales/pt.json index e8d0477..ec0d42b 100644 --- a/frontend/app/locales/pt.json +++ b/frontend/app/locales/pt.json @@ -104,11 +104,12 @@ "launcher": "Launcher", "allLaunchers": "Todos os Launchers", "lunar": "Lunar Client", - "labymod": "LabyMod", + "labymod": "LabyClient", "filterSort": "Filtrar e Ordenar", "reset": "Redefinir", "sortAscTitle": "Ordem crescente", - "sortDescTitle": "Ordem decrescente" + "sortDescTitle": "Ordem decrescente", + "laby": "LabyClient" } }, "hero": { @@ -144,14 +145,14 @@ "offlineMotdNotice": "Este servidor está offline, a mostrar o último estado registado", "sidebar": { "socials": "Redes Sociais", - "labyEmpty": "Este servidor está registrado no LabyMod mas ainda não preencheu suas informações.", + "labyEmpty": "Este servidor está registrado no LabyClient mas ainda não preencheu suas informações.", "lunarEmpty": "Este servidor está registrado no Lunar Client mas ainda não preencheu suas informações.", - "labyPartner": "Parceiro Oficial LabyMod", + "labyPartner": "Parceiro Oficial LabyClient", "lunarPartner": "Parceiro Oficial Lunar", "playerStats": "Estatísticas de Jogadores", "searchPlayer": "Buscar por um jogador...", "gamemodes": "Modos de Jogo", - "labymodInfo": "Informações LabyMod", + "labymodInfo": "Informações LabyClient", "lunarInfo": "Informações Lunar Client", "website": "Site", "web": "Site", @@ -160,7 +161,9 @@ "minecraftVersions": "Versões do Minecraft", "trailer": "Trailer", "showMore": "Mostrar mais {count}", - "showLess": "Mostrar menos" + "showLess": "Mostrar menos", + "labyInfo": "Informações LabyClient", + "labyServerList": "Lista de servidores LabyClient" } }, "comparison": { diff --git a/frontend/app/locales/ru.json b/frontend/app/locales/ru.json index 6467617..13e04f9 100644 --- a/frontend/app/locales/ru.json +++ b/frontend/app/locales/ru.json @@ -104,11 +104,12 @@ "launcher": "Лаунчер", "allLaunchers": "Все лаунчеры", "lunar": "Lunar Client", - "labymod": "LabyMod", + "labymod": "LabyClient", "filterSort": "Фильтр и сортировка", "reset": "Сбросить", "sortAscTitle": "Порядок возрастания", - "sortDescTitle": "Порядок убывания" + "sortDescTitle": "Порядок убывания", + "laby": "LabyClient" } }, "hero": { @@ -144,14 +145,14 @@ "offlineMotdNotice": "Этот сервер сейчас офлайн, показан последний сохранённый статус", "sidebar": { "socials": "Социальные сети", - "labyEmpty": "Этот сервер зарегистрирован в LabyMod, но пока не заполнил свою информацию.", + "labyEmpty": "Этот сервер зарегистрирован в LabyClient, но пока не заполнил свою информацию.", "lunarEmpty": "Этот сервер зарегистрирован в Lunar Client, но пока не заполнил свою информацию.", - "labyPartner": "Официальный партнер LabyMod", + "labyPartner": "Официальный партнер LabyClient", "lunarPartner": "Официальный партнер Lunar", "playerStats": "Статистика игроков", "searchPlayer": "Поиск игрока...", "gamemodes": "Режимы игры", - "labymodInfo": "Информация LabyMod", + "labymodInfo": "Информация LabyClient", "lunarInfo": "Информация Lunar Client", "website": "Веб-сайт", "web": "Сайт", @@ -160,7 +161,9 @@ "minecraftVersions": "Версии Minecraft", "trailer": "Трейлер", "showMore": "Показать еще {count}", - "showLess": "Свернуть" + "showLess": "Свернуть", + "labyInfo": "Информация LabyClient", + "labyServerList": "Список серверов LabyClient" } }, "comparison": { diff --git a/frontend/app/locales/zh-CN.json b/frontend/app/locales/zh-CN.json index 522e326..bb7310c 100644 --- a/frontend/app/locales/zh-CN.json +++ b/frontend/app/locales/zh-CN.json @@ -104,11 +104,12 @@ "launcher": "启动器", "allLaunchers": "所有启动器", "lunar": "Lunar Client", - "labymod": "LabyMod", + "labymod": "LabyClient", "filterSort": "筛选与排序", "reset": "重置", "sortAscTitle": "升序排列", - "sortDescTitle": "降序排列" + "sortDescTitle": "降序排列", + "laby": "LabyClient" } }, "hero": { @@ -144,14 +145,14 @@ "offlineMotdNotice": "该服务器当前离线,显示的是最后保存的状态", "sidebar": { "socials": "社交网络", - "labyEmpty": "该服务器已在 LabyMod 上注册,但尚未填写信息。", + "labyEmpty": "该服务器已在 LabyClient 上注册,但尚未填写信息。", "lunarEmpty": "该服务器已在 Lunar Client 上注册,但尚未填写信息。", - "labyPartner": "官方 LabyMod 合作伙伴", + "labyPartner": "官方 LabyClient 合作伙伴", "lunarPartner": "官方 Lunar 合作伙伴", "playerStats": "玩家统计信息", "searchPlayer": "搜索玩家...", "gamemodes": "游戏模式", - "labymodInfo": "LabyMod 信息", + "labymodInfo": "LabyClient 信息", "lunarInfo": "Lunar Client 信息", "website": "网站", "web": "网站", @@ -160,7 +161,9 @@ "minecraftVersions": "Minecraft 版本", "trailer": "宣传视频", "showMore": "显示更多 {count} 项", - "showLess": "收起" + "showLess": "收起", + "labyInfo": "LabyClient 信息", + "labyServerList": "LabyClient 服务器列表" } }, "comparison": { diff --git a/frontend/app/pages/compare/components/SelectedServersTags.tsx b/frontend/app/pages/compare/components/SelectedServersTags.tsx index 13ff2b0..7a9966f 100644 --- a/frontend/app/pages/compare/components/SelectedServersTags.tsx +++ b/frontend/app/pages/compare/components/SelectedServersTags.tsx @@ -42,12 +42,15 @@ export function SelectedServersTags({ selectedServers, removeServer }: SelectedS /> {s.name} {s.client_infos?.lunar && ( - + )} {s.client_infos?.laby && ( )} diff --git a/frontend/app/pages/home/components/ServerListFilters.tsx b/frontend/app/pages/home/components/ServerListFilters.tsx index 0b1b57f..ae8d21d 100644 --- a/frontend/app/pages/home/components/ServerListFilters.tsx +++ b/frontend/app/pages/home/components/ServerListFilters.tsx @@ -46,8 +46,8 @@ interface ServerListFiltersProps { setActiveSort: (sort: "popularity" | "name" | "recent") => void sortDirection: "asc" | "desc" setSortDirection: (dir: "asc" | "desc") => void - activeLauncher: "all" | "lunar" | "labymod" - setActiveLauncher: (launcher: "all" | "lunar" | "labymod") => void + activeLauncher: "all" | "lunar" | "laby" + setActiveLauncher: (launcher: "all" | "lunar" | "laby") => void onResetFilters: () => void onRefresh?: () => void isRefreshing?: boolean @@ -335,12 +335,12 @@ export function ServerListFilters({ }, { value: "lunar", - label: "Lunar", + label: t("serverList.filters.lunar"), icon: , }, { - value: "labymod", - label: "LabyMod", + value: "laby", + label: t("serverList.filters.laby"), icon: , }, ]} diff --git a/frontend/app/pages/home/index.tsx b/frontend/app/pages/home/index.tsx index 4972fc5..a9e0e80 100644 --- a/frontend/app/pages/home/index.tsx +++ b/frontend/app/pages/home/index.tsx @@ -163,7 +163,7 @@ function ServerListContent({ initialServers }: { initialServers: Server[] }) { const sortDirection = dirParam === "asc" ? "asc" : "desc" const launcherParam = searchParams.get("launcher") - const activeLauncher = (launcherParam === "lunar" || launcherParam === "labymod") ? launcherParam : "all" + const activeLauncher = (launcherParam === "lunar" || launcherParam === "laby") ? launcherParam : (launcherParam === "labymod" ? "laby" : "all") const pageParam = searchParams.get("page") const currentPage = pageParam && !isNaN(Number(pageParam)) ? Math.max(1, Number(pageParam)) : 1 @@ -199,7 +199,7 @@ function ServerListContent({ initialServers }: { initialServers: Server[] }) { const setActivePlatform = useCallback((platform: "all" | "java" | "bedrock") => updateFilter("platform", platform, "all"), [updateFilter]) const setActiveSort = useCallback((sort: "popularity" | "name" | "recent") => updateFilter("sort", sort, "popularity"), [updateFilter]) const setSortDirection = useCallback((dir: "desc" | "asc") => updateFilter("dir", dir, "desc"), [updateFilter]) - const setActiveLauncher = useCallback((launcher: "all" | "lunar" | "labymod") => updateFilter("launcher", launcher, "all"), [updateFilter]) + const setActiveLauncher = useCallback((launcher: "all" | "lunar" | "laby") => updateFilter("launcher", launcher, "all"), [updateFilter]) // Un seul appel à setSearchParams : la forme fonctionnelle de setSearchParams // ne cumule pas les appels faits dans le même tick (pas de queue comme setState). @@ -247,7 +247,7 @@ function ServerListContent({ initialServers }: { initialServers: Server[] }) { // Filtrage par launcher if (activeLauncher === "lunar") { list = list.filter(s => s.client_infos?.lunar) - } else if (activeLauncher === "labymod") { + } else if (activeLauncher === "laby") { list = list.filter(s => s.client_infos?.laby) } diff --git a/frontend/app/pages/server-detail/components/ServerDetailHeader.tsx b/frontend/app/pages/server-detail/components/ServerDetailHeader.tsx index 822debc..ec77517 100644 --- a/frontend/app/pages/server-detail/components/ServerDetailHeader.tsx +++ b/frontend/app/pages/server-detail/components/ServerDetailHeader.tsx @@ -74,10 +74,10 @@ export function ServerDetailHeader({ server, t, language }: ServerDetailHeaderPr {server.name} {server.client_infos?.lunar && ( - + )} {server.client_infos?.laby && ( - + )}
diff --git a/frontend/app/pages/server-detail/components/ServerSidebar.tsx b/frontend/app/pages/server-detail/components/ServerSidebar.tsx index 5ad6ed9..ffb9002 100644 --- a/frontend/app/pages/server-detail/components/ServerSidebar.tsx +++ b/frontend/app/pages/server-detail/components/ServerSidebar.tsx @@ -148,7 +148,7 @@ export function ServerSidebar({ client_infos, labyManifest }: ServerSidebarProps ) : ( )} - {isLaby ? t("serverDetail.sidebar.labymodInfo") : t("serverDetail.sidebar.lunarInfo")} + {isLaby ? t("serverDetail.sidebar.labyInfo") : t("serverDetail.sidebar.lunarInfo")} {canSwitch && (
@@ -162,7 +162,7 @@ export function ServerSidebar({ client_infos, labyManifest }: ServerSidebarProps > {isAutoSwitching ? : } -
) diff --git a/frontend/app/pages/server-detail/hooks/useServerData.ts b/frontend/app/pages/server-detail/hooks/useServerData.ts index 4769c3f..fed9bfd 100644 --- a/frontend/app/pages/server-detail/hooks/useServerData.ts +++ b/frontend/app/pages/server-detail/hooks/useServerData.ts @@ -61,7 +61,7 @@ export function useServerData(initialServer: Server | null, initialRecords: Serv const info: LabyRawInfo | undefined = server.client_infos.laby.raw; const manifestAttachment = info?.attachments?.find((a) => a.file_name === 'manifest.json') if (manifestAttachment?.url) { - const proxyUrl = `/api/labymod/manifest?url=${encodeURIComponent(manifestAttachment.url)}` + const proxyUrl = `/api/laby/manifest?url=${encodeURIComponent(manifestAttachment.url)}` fetch(proxyUrl) .then(res => { if (!res.ok) throw new Error("Failed to fetch manifest") diff --git a/frontend/app/pages/server-detail/types.ts b/frontend/app/pages/server-detail/types.ts index 851a8a7..bd96b40 100644 --- a/frontend/app/pages/server-detail/types.ts +++ b/frontend/app/pages/server-detail/types.ts @@ -1,4 +1,4 @@ -/** LabyMod server-media payload (subset actually rendered). */ +/** LabyClient server-media payload (subset actually rendered). */ export interface LabyGamemode { name?: string command?: string @@ -41,7 +41,7 @@ export interface ClientInfos { } } -/** LabyMod manifest.json attachment (subset actually rendered). */ +/** LabyClient manifest.json attachment (subset actually rendered). */ export interface LabyManifest { supported_languages?: string[] yt_trailer?: string diff --git a/frontend/app/routes.ts b/frontend/app/routes.ts index 4ad21f2..e0c3bd7 100644 --- a/frontend/app/routes.ts +++ b/frontend/app/routes.ts @@ -16,8 +16,6 @@ export default [ route("dashboard/:subview", "pages/admin/index.tsx", { id: "dashboard-subview" }), route("sitemap.xml", "routes/sitemap.ts"), route("api/favicon/:id", "routes/favicon.ts"), - route("api/labymod/manifest", "routes/labymodManifest.ts"), - route("api/laby/servers", "routes/labyServers.ts"), - route("api/lunar/servers", "routes/lunarServers.ts"), + route("api/laby/manifest", "routes/labyManifest.ts"), route("robots.txt", "routes/robots.ts"), ] satisfies RouteConfig; diff --git a/frontend/app/routes/labymodManifest.ts b/frontend/app/routes/labyManifest.ts similarity index 100% rename from frontend/app/routes/labymodManifest.ts rename to frontend/app/routes/labyManifest.ts diff --git a/frontend/app/routes/labyServers.ts b/frontend/app/routes/labyServers.ts deleted file mode 100644 index 5a8bd29..0000000 --- a/frontend/app/routes/labyServers.ts +++ /dev/null @@ -1,26 +0,0 @@ -export async function loader() { - try { - const res = await fetch("https://laby.net/api/v3/publicServers", { - headers: { - "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" - } - }); - - if (!res.ok) { - return new Response("Failed to fetch Laby public servers", { status: res.status }); - } - - const data = await res.text(); - - return new Response(data, { - status: 200, - headers: { - "Content-Type": "application/json", - "Cache-Control": "public, max-age=3600", - "Access-Control-Allow-Origin": "*" - } - }); - } catch { - return new Response("Internal Server Error", { status: 500 }); - } -} diff --git a/frontend/app/routes/lunarServers.ts b/frontend/app/routes/lunarServers.ts deleted file mode 100644 index a03d773..0000000 --- a/frontend/app/routes/lunarServers.ts +++ /dev/null @@ -1,27 +0,0 @@ -export async function loader() { - try { - const uuid = crypto.randomUUID(); - const res = await fetch(`https://api.lunarclientprod.com/launcher/servers?installation_id=${uuid}&os=win32&os_release=10.0&arch=x64&launcher_version=3.0.0`, { - headers: { - "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" - } - }); - - if (!res.ok) { - return new Response("Failed to fetch Lunar servers", { status: res.status }); - } - - const data = await res.text(); - - return new Response(data, { - status: 200, - headers: { - "Content-Type": "application/json", - "Cache-Control": "public, max-age=3600", - "Access-Control-Allow-Origin": "*" - } - }); - } catch { - return new Response("Internal Server Error", { status: 500 }); - } -} From 6298608b3cac4919f164506d632c336d28ef60f8 Mon Sep 17 00:00:00 2001 From: Flash303 Date: Mon, 19 Oct 2026 14:23:58 +0200 Subject: [PATCH 2/3] fix: upgrade mc pinger version --- backend/Cargo.lock | 4 ++-- backend/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index fb22572..9f60643 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -2262,9 +2262,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "minecraft-pinger" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7e9f55edc28287eaa93f63508c9a4058b1ca04ba1d5b35a4068519e9522b80" +checksum = "ec4292bdf0a0ae6ee907c0f9bb8c61162e78b083613b48087afe7afc14cc88e8" dependencies = [ "bytes", "hickory-resolver", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 6545fe9..d4ccb30 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -4,7 +4,7 @@ members = ["worker", "rest-api"] [workspace.dependencies] repository = { path = "./crates/repository" } -minecraft-pinger = "0.1.6" +minecraft-pinger = "0.1.8" log = "0.4.*" env_logger = "0.11.*" From 3c173054aac425f9a0a107b84d0e3b551d8ae691 Mon Sep 17 00:00:00 2001 From: Flash303 Date: Mon, 19 Oct 2026 14:24:09 +0200 Subject: [PATCH 3/3] fix replace u8 by u32 --- backend/worker/src/tasks/mojang_checker.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/worker/src/tasks/mojang_checker.rs b/backend/worker/src/tasks/mojang_checker.rs index 7515fa9..6f1455f 100644 --- a/backend/worker/src/tasks/mojang_checker.rs +++ b/backend/worker/src/tasks/mojang_checker.rs @@ -48,7 +48,7 @@ pub async fn mojang_checker_worker(repository: impl Repository + Clone) { .build() .unwrap(); - let mut consecutive_failures = 0; + let mut consecutive_failures: u32 = 0; loop { let count_time = Instant::now(); @@ -88,7 +88,7 @@ pub async fn mojang_checker_worker(repository: impl Repository + Clone) { consecutive_failures = 0; } - let is_confirmed_down = consecutive_failures >= REQUIRED_FAILURES; + let is_confirmed_down = consecutive_failures >= u32::from(REQUIRED_FAILURES); match repository.get_mojang_api_status().await { Ok(db_is_down) => {