fix(skin): ��������� ����� � ��������� ������� #32

Merged
min merged 1 commits from fix/skin-card-validation into main 2026-06-15 05:21:28 +00:00
Showing only changes of commit 3754ecf4a1 - Show all commits

View File

@ -1,6 +1,7 @@
import React, { useEffect, useState, useRef, useCallback } from 'react';
import Icon from '../editor-shared/Icon';
import { STORYS_addres, USER_addres } from '../api/API';
import { MIXAMO_SKINS } from '../engine/PlayerController';
const getToken = () => {
try {
@ -608,19 +609,18 @@ function PlayerCard({ player, isMe, isFriend, isPending, onAddFriend }) {
let avatarUrl = null;
let isSkin = false;
if (player.skin && typeof player.skin === 'string') {
const isLegacy = LEGACY_SKINS.has(player.skin);
if (!isLegacy && player.skin.startsWith('skin_')) {
// Mixamo: PNG на rublox-site (на проде rublox.pro,
// локально localhost:3000) рядом с GLB.
// ВАЛИДАЦИЯ: legacy R15-скины (bacon-hair и пр.) больше не существуют.
// Если скин НЕ в наборе валидных Mixamo (80 шт) показываем аватар
// дефолтного skin_y-bot (как и в самой игре 3D-модель валидируется).
let skinId = player.skin;
if (!MIXAMO_SKINS.has(skinId) && !skinId.startsWith('customskin:')) {
skinId = 'skin_y-bot';
}
const base = (typeof window !== 'undefined'
&& window.location.hostname === 'localhost')
? 'http://localhost:3000'
: 'https://rublox.pro';
avatarUrl = `${base}/character-assets/skins/${player.skin}.png?v=20260614`;
} else {
// Legacy R15: путь по старому шаблону.
avatarUrl = `/kubikon-assets/characters/${player.skin}/avatar.png?v=2026_05_27`;
}
avatarUrl = `${base}/character-assets/skins/${skinId}.png?v=20260614`;
isSkin = true;
} else if (player.photo_thumb_b64) {
avatarUrl = player.photo_thumb_b64.startsWith('data:')