diff --git a/src/lib/services/clone-sources.ts b/src/lib/services/clone-sources.ts index 222b5a8d..db8d41f2 100644 --- a/src/lib/services/clone-sources.ts +++ b/src/lib/services/clone-sources.ts @@ -148,6 +148,39 @@ export const DEFAULT_SOURCES: CloneSource[] = [ hotel: "com", sourceSwfBaseUrl: "https://virtualc.nl/dcr", }, + { + id: "default-habboon", + name: "Habboon", + furnidataUrl: "https://assets.habboon.pw/nitro/gamedata/FurnitureData.json", + nitroBaseUrl: "https://assets.habboon.pw/nitro/bundled/furniture", + iconBaseUrl: "", + hotel: "com", + // Habboon serves SWFs at /dcr/hof_furni/{classname}.swf (no revision + // segment) — the import service also tries that variant. + sourceSwfBaseUrl: "https://assets.habboon.pw/dcr", + }, + { + id: "default-leet", + name: "Leet", + furnidataUrl: + "https://images.leet.city/leet-asset-bundles/gamedata/leet_furni.json?v=7ce4b1ce", + nitroBaseUrl: + "https://images.leet.city/leet-asset-bundles/libraries/furniture_new2", + iconBaseUrl: "https://images.leet.city/library/hof_furni/icons", + hotel: "com", + // Leet serves SWFs at /library/hof_furni/{classname}.swf (no revision + // segment) — the import service tries both with- and without-revision. + sourceSwfBaseUrl: "https://images.leet.city/library", + }, + { + id: "default-hubbly", + name: "Hubbly", + furnidataUrl: "https://hubbly.pw/nitro/gamedata/hubbly_furni.json", + nitroBaseUrl: "https://hubbly.pw/nitro/furniture", + iconBaseUrl: "https://hubbly.pw/swf/dcr/hof_furni/icons", + hotel: "com", + // Hubbly serves no standalone SWFs — the .nitro bundles are used. + }, ]; export const DEFAULT_ICON_SOURCES: CloneSource[] = DEFAULT_SOURCES.filter( diff --git a/src/lib/services/furni-import.ts b/src/lib/services/furni-import.ts index 903f1e0f..17516645 100644 --- a/src/lib/services/furni-import.ts +++ b/src/lib/services/furni-import.ts @@ -689,6 +689,11 @@ export async function importSingleFurni(params: { swfUrls.push( `${sourceSwfBaseUrl}/hof_furni/${rev}/${encodeURIComponent(safeSwfName)}.swf`, ); + // Some retros (e.g. Leet, Habboon) serve SWFs without a revision + // segment: /hof_furni/{classname}.swf + swfUrls.push( + `${sourceSwfBaseUrl}/hof_furni/${encodeURIComponent(safeSwfName)}.swf`, + ); } // Official Habbo CDN fallbacks