前言
由于Mojang之前改了API,Github上没有几个完全可用的,然后之前开发了一个C#Winform版也开源了,开源地址,然后想想为什么不开发一个Web版,还方便使用,也可以作为一个API请求使用。
开发
之前在这篇文章 无聊写了个Minecraft皮肤获取,分享一些API 写过了Mojang API的请求获取到皮肤的全部步骤,这里就不再详细的说了。
首先请求站点传输参数 name
即Minecraft ID,例如要请求玩家Jeb_的信息
首先通过 $_GET['name']
来获取到玩家的名字,然后拼接API请求URL
$mojang_uuid = curl_get_https('https://api.mojang.com/users/profiles/minecraft/'.$_GET['name']);
$de_uuid = json_decode($mojang_uuid, true);
通过上面解码返回的JSON获取玩家的UUID继续下一次请求与拼接
$player_profile= curl_get_https('https://sessionserver.mojang.com/session/minecraft/profile/' . $de_uuid['id']);
$de_profile = json_decode($player_profile, true);
之前也介绍过了玩家的皮肤数据JSON是通过BASE64加密的,我们需要解码并解析,这里写成一句就行。
$de_textures = json_decode(base64_decode($de_profile['properties'][0]['value']), true);
之后我们就可以使用上面解析的最终JSON来获取我们的玩家数据
$de_textures['textures']['SKIN']['url'] //皮肤
$de_textures['textures']['CAPE']['url'] //披风
生成头像
我们知道Minecraft的API里并没有头像这一选项,但是我们可以通过截取皮肤来获取头像位置的图片,将其展示出来
//裁剪并缩放创建头像
$copyskin = imagecreatetruecolor($size_avatar, $size_avatar);
$originalskin = imagecreatefromstring(file_get_contents($de_textures['textures']['SKIN']['url']));
//imagecopyresized 参数为 目标图像,被拷贝的图像,目标X坐标,目标Y坐标,拷贝X坐标,拷贝Y坐标,拷贝的宽度,拷贝的高度
imagecopyresized($copyskin, $originalskin, 0, 0, 8, 8, $size_avatar, $size_avatar, 8, 8);
通过PS放大图片可见,头的开始顶部位置和左侧位置均为8个格,那么上面 imagecopyresized
的拷贝X,Y坐标则为8,8,那么玩家头部的宽度和高度也为8格,那么由此得到上面那句代码。

开源
没什么技术含量,最近各种重新学习以前偶尔用用的编程语言,练手之作
GitHub - PHP-Minecraft-Skin
成品效果
