Récupérer les skins de minecraft en PHP
Je sort un peu du fil éditorial du blog mais bon, c'est du code alors c'est pas si loin que ça. Un ami à eu besoin pour son serveur minecraft de récupérer les skins des utilisateurs pour ensuite l'afficher sur le site. Minecraft stock les skins dans une toute petite image au format png, de 64 sur 32 pixel.
L'image est ensuite découpé pour définir les parties du corps. Les skins sont disponible au libre accès à cette adresse: http://www.minecraft.net/skin/nom_d'utilisateur
Alors le but est de récupérer cette image, de la découper, puis de l'afficher. On peut également s'amuser avec les transformations CSS3 pour recréer le skin en perspective "3D" et il serait intéressant d'utiliser l'objet Canvas ou tout simplement du WebGL pour reproduire le skin en vrai 3D si cela n'a pas déjà été fait.
J'ai donc créé une petit classe php qui récupère le skin puis le découpe de la bonne façons, en bonus je vous donne le CSS pour l'afficher en 3D, mais cela pose des problèmes de décalage si vous voulez changer la taille (a moins d'utiliser scale, ou zoom en CSS) La classe utilise la librairie GD, ainsi qu'une conversion en base64 pour afficher directement les images ce qui permet de garder les images complètes sur le serveur. Le script doit avoir les droits nécessaire pour télécharger les skins et les placer dans le dossier skins/
Petit défaut du script, comme il télécharge le skin puis le garde, si le skin est modifié, les modifications ne sera pas prise en compte car, le script prendra le skin du serveur. Il faut donc soit prévoir un cron qui vide le dossier skins de temps en temps, soit faire une vérification md5 du fichier tout les X utilisations.
Petit démo live ici ( ajoutez ?user=votre_username à la fin de l'url pour tester avec votre skin. ).
Si non vous pouvez tout télécharger ici: minecraft_skin_class.tar.gz (50,8ko), le tout n'est évidemment pas exempt de bugs :)