یک کله سفارشی یک URL بستهبندیشده در JSON base64 ذخیره میکند، نه یک تصویر
مؤلفه profile حاوی base64 از {textures:{SKIN:{url:…}}} است. به همین دلیل است که ظاهر یک کله در همان لحظه ساختش ثابت میشود و پایگاه داده میتواند دهها هزار ورودی داشته باشد.
یک کله بازیکن سفارشی حاوی تصویر نیست. حاوی یک هش بافت، بستهبندیشده در JSON، بستهبندیشده در base64، که درون مؤلفه profile آیتم قرار دارد.
لایهها
با شروع از یک هش، دستور به این صورت ساخته میشود:
1. hash e3b0c44298fc1c149afbf4c8996fb924…
2. JSON {"textures":{"SKIN":{"url":"http://textures.minecraft.net/texture/<hash>"}}}
3. base64 eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6…
4. component /give @p player_head[profile={properties:[{name:"textures",value:"<base64>"}]}]
چهار لایه برای گفتن «این کله شبیه آن تصویر است». این ویژگی همیشه اینگونه نامگذاری میشود textures, and the value is always the base64 of that JSON shape.
دو نکته مستقیماً به دنبال آن میآید:
یک کله یک تصویر لحظهای است، نه پیوندی به یک شخص. این URL به یک فایل بافت تغییرناپذیر اشاره میکند، نه به یک حساب کاربری. هر چیزی که آن هش در زمان ساخت کله به آن اشاره میکرد، همان چیزی است که همیشه نشان خواهد داد.
دادهها بسیار کمحجم هستند. یک ورودی کله شامل یک نام، یک هش و چند برچسب است — بدون هیچ بایت تصویری. به همین دلیل است که یک کاتالوگ میتواند دهها هزار کله را به صورت JSON استاتیک ساده نگهداری کند و همچنان سریع بارگیری شود.
چرا کاتالوگ بر اساس دستهبندی بارگیری میشود
پایگاه داده در اینجا مجموعه کلههای CC0 اثر TheSilentPro است، و واکشی میشود یک دستهبندی در هر بار به جای همه به طور یکجا. یک فهرست، دستهبندیها و تعداد آنها را مشخص میکند؛ انتخاب یکی تنها همان فایل را واکشی میکند.
این به معنای مهندسی تنبل نیست، بلکه تنها ساختاری است که در این مقیاس کار میکند. کل مجموعه به عنوان یک فایل JSON واحد، دانلود سنگینی برای کسی خواهد بود که فقط سه کله از یک دستهبندی میخواهد.
محدودیت رندر 300 آیتم یک محدودیت DOM است، نه محدودیت جستجو
نتایج حداکثر 300 در هر بار رسم میشوند. جستجو همچنان روی تمام موارد موجود در دستهبندی بارگیریشده اجرا میشود — محدودیت بر تعداد مواردی اعمال میشود که به گرههای DOM تبدیل میشوند، نه مواردی که بررسی میشوند.
این تمایز زمانی اهمیت دارد که جستجو اعلام میکند 300 مورد اول را نمایش میدهد: ورودیهای مفقود پیدا شدهاند و فقط در صفحه نمایش داده نمیشوند، نه اینکه از پرسوجو حذف شده باشند. محدود کردن جستجو به جای تلاش بیشتر برای جستجو، آنها را در محدوده قرار میدهد.
رسم دهها هزار عنصر به طور همزمان چیزی است که این سقف برای جلوگیری از آن وجود دارد، و این یک محدودیت واقعی است نه یک عدد رند محتاطانه — یک شبکه به این بزرگی مدتها قبل از اینکه غیرقابل رندر شود، قابلیت اسکرول خود را از دست میدهد.
هیچ چیز در اینجا چیزی آپلود نمیکند
دادههای کله به صورت JSON استاتیک هممبدأ هستند. تنها درخواست شخص ثالث، <img> preview from mc-heads.net, which resolves a hash into a picture for display. The /give command is assembled locally from the hash, so the command works whether or not that preview loaded.