diff --git a/src/app/services/DataFetcher.ts b/src/app/services/DataFetcher.ts index e9d3be89..830c811e 100644 --- a/src/app/services/DataFetcher.ts +++ b/src/app/services/DataFetcher.ts @@ -3,6 +3,7 @@ import config from '../Config.js' import { Store } from '../Store.js' import { message } from '../Utils.js' import type { BlockStateRegistry, VersionId } from './Schemas.js' +import { checkVersion } from './Schemas.js' const CACHE_NAME = 'misode-v2' const CACHE_LATEST_VERSION = 'cached_latest_version' @@ -124,6 +125,9 @@ export async function fetchItemComponents(versionId: VersionId) { console.debug(`[fetchItemComponents] ${versionId}`) const version = config.versions.find(v => v.id === versionId)! const result = new Map>() + if (!checkVersion(versionId, '1.20.5')) { + return result + } try { const data = await cachedFetch>>(`${mcmeta(version, 'summary')}/item_components/data.min.json`) for (const [id, components] of Object.entries(data)) { @@ -267,11 +271,28 @@ async function loadImage(src: string) { } */ +interface DeprecatedInfo { + removed: string[] + renamed: Record +} + export async function fetchLanguage(versionId: VersionId, lang: string = 'en_us') { const version = config.versions.find(v => v.id === versionId)! await validateCache(version) try { - return await cachedFetch>(`${mcmeta(version, 'assets')}/assets/minecraft/lang/${lang}.json`) + const translations = await cachedFetch>(`${mcmeta(version, 'assets')}/assets/minecraft/lang/${lang}.json`) + if (checkVersion(versionId, '1.21.2')) { + const deprecated = await cachedFetch(`${mcmeta(version, 'assets')}/assets/minecraft/lang/deprecated.json`) + for (const key of deprecated.removed) { + delete translations[key] + } + for (const [oldKey, newKey] of Object.entries(deprecated.renamed)) { + const value = translations[oldKey] + delete translations[oldKey] + translations[newKey] = value + } + } + return translations } catch (e) { throw new Error(`Error occured while fetching language: ${message(e)}`) }