最近带小朋友玩MC,小朋友总是很在意皮肤。甚至为了有不同的皮肤不断的换名称来达到更换的效果。虽然我劝道,反正皮肤是给别人看的,不必太在意。然而还是没有太大作用。小朋友也在意外表吧。
因为我不是很在意皮肤所以一直没有研究这个事情。那就开搞吧。这里以离线用户为例,启动器是HMCL
为什么在hmcl中设置的皮肤没有效果?
你是否有这样的困惑,在hmcl中设置的皮肤,进游戏并不会生效。
有时刚进入游戏是你设置的皮肤,比如:Alex 但是过一会儿会刷新掉。我是带着这个疑惑写这篇文章的。
结论:由于我安装的CustomSkinLoader覆盖了原来的皮肤导致的。
CustomSkinLoader
建议使用 CustomSkinLoader 作为皮肤加载 Mod,同时也支持其他所有支持 CustomSkinAPI 和传统皮肤加载方式的皮肤 Mod。
你可以在下方下载到适用于 Minecraft 1.6.4 及以上版本的 CustomSkinLoader,下载完成后将其放入 .minecraft/mods
文件夹内即可。
加载本地皮肤
首先说明一下如何加载本地皮肤。安装完CustomSkinLoader 以后先运行一下游戏,然后会发现在以下目录会生成一个
/hmcl/.minecraft/versions/XPlus OptiReady based on Minecraft 1.20.1 (Forge)_2024/CustomSkinLoader
目录,目录下有CustomSkinLoader.json
文件就是我们要修改的配置文件。
“loadlist”: []中有很多内容,找到以下内容,并把它剪切到最前面即可。根据我的测试,越在前面越会优先加载。
{
"name": "LocalSkin",
"type": "Legacy",
"checkPNG": false,
"skin": "LocalSkin/skins/{USERNAME}.png",
"model": "auto",
"cape": "LocalSkin/capes/{USERNAME}.png",
"elytra": "LocalSkin/elytras/{USERNAME}.png"
},
为了方便看,我减化了一些内容,只保留最需要的部分:
{
"enable": true,
"loadlist": [
{
"name": "LocalSkin",
"type": "Legacy",
"checkPNG": false,
"skin": "LocalSkin/skins/{USERNAME}.png",
"model": "auto",
"cape": "LocalSkin/capes/{USERNAME}.png",
"elytra": "LocalSkin/elytras/{USERNAME}.png"
}
]
}
我们只需要把皮肤文件命名成你的id.png就行了。比如:我的名称是itkey,文件名itkey.png就可以了。
此目录/hmcl/.minecraft/versions/XPlus OptiReady based on Minecraft 1.20.1 (Forge)_2024/CustomSkinLoader
下面
LocalSkin/skins/
LocalSkin/capes/
LocalSkin/elytras/
这里你可能会问,那么皮肤文件到哪里获取呢?别人怎么获取我不知道,我是从https://littleskin.cn/免费下载的。
对于单人生存到这里也就够用了。但是联机和朋友一起玩就会发现皮肤只能自己看到,别人是看不到的。作为程序员我的,来分析一下原因:
- 皮肤文件存放在你的电脑本地,别人无法访问就导致别人看不到了。
- 猜测:如果想让别人也能看到你的皮肤,可以把自己的LocalSkin/复制到对方的电脑上。理论上别人就也可以看到了。
当然这只是我的推测,我并没有实际这样测试,因为我觉得往别人电脑里复制太麻烦了。
那么如何让联机时其他小伙伴也能看到皮肤呢?
littleskin
https://littleskin.cn/这个网站我是从hmcl启动器中看到的。
- 直接点进去注册个账号
- 创建个与自己的名称一样的角色,给角色设置好皮肤就搞定了。
前提你没有对CustomSkinLoader.json
文件做任何修改,默认的配置就已经可以了。如果你看了上一节,加载本地皮肤修改过了配置文件则还需要把配置修改回去。现在也别急修改回去,后面会讲到如何修改。
踩坑
如果你比较顺利的话,现在已经成功了。但是我运气不好遇到点坑。
通过在littleskin创建角色,我们联机确实可以看到对方的皮肤了,但是遇到了一种情况。我的itkey账号怎么设置都不生效。为了这个搞的我非常的难受。研究了好久终于找到了原因了。
原因分析
默认自动生成的CustomSkinLoader.json,形如下面的内容:
{
"version": "15.0",
"buildNumber": 10,
"loadlist": [
{
"name": "Mojang",
"type": "MojangAPI",
"apiRoot": "https://api.mojang.com/",
"sessionRoot": "https://sessionserver.mojang.com/"
},
{
"name": "LittleSkin",
"type": "CustomSkinAPI",
"root": "https://littleskin.cn/csl/"
},
{
"name": "BlessingSkin",
"type": "CustomSkinAPI",
"root": "https://skin.prinzeugen.net/"
},
//....下面省略...
可以看出loadlist中Mojang的优先级是最高的,其次才是LittleSkin。这样就可以理解了。也就是说如果Mojang平台恰巧有一个人用的名称和你的一样,就会导致优先用Mojang设置的皮肤。你在LittleSkin怎么折腾也没有用。
解决办法
只要把"name": "LittleSkin"放到最前面就行了。
{
"version": "15.0",
"buildNumber": 10,
"loadlist": [
{
"name": "LittleSkin",
"type": "CustomSkinAPI",
"root": "https://littleskin.cn/csl/"
},
{
"name": "Mojang",
"type": "MojangAPI",
"apiRoot": "https://api.mojang.com/",
"sessionRoot": "https://sessionserver.mojang.com/"
},
{
"name": "BlessingSkin",
"type": "CustomSkinAPI",
"root": "https://skin.prinzeugen.net/"
},
//....下面省略...
此时我仿佛听到有人问博主,你最终的配置是什么样能不能分享一下,我精简了一下只保留LittleSkin的配置,我最终的配置如下:
{
"enable": true,
"loadlist": [
{
"name": "LittleSkin",
"type": "CustomSkinAPI",
"root": "https://littleskin.cn/csl/"
}
]
}