somthing about custom server on 1.14
Opened this issue · 13 comments
I tryed the Mojang,Crafatar,Offline skin V2 is work on 1.14 pre3.When I use custom server
Blessin-skin-server,it is not work.
The frist,blessin skin's API is
GET /skin/username.png
GET /cape/username.png
I changed API to
GET /skins/username
It's still not work.
I think maby the proplem is
my skin is 64X64 and the skin from Mojang is 64X32.
I tryed to change my skin. it's still nothing.
Here is server log,
- - [19/Apr/2019:02:33:55 +0800] "GET /skins/Colin HTTP/1.1" 200 1478 "-" "Java/1.8.0_161"
- - [19/Apr/2019:02:33:55 +0800] "GET /skins/e94a044e-53ca-4e95-846f-b5cf839e15a1 HTTP/1.1" 204 0 "-" "Java/1.8.0_161"
- - [19/Apr/2019:02:33:55 +0800] "GET /skins/e94a044e-53ca-4e95-846f-b5cf839e15a1 HTTP/1.1" 204 0 "-" "Java/1.8.0_161"
- - [19/Apr/2019:02:33:55 +0800] "GET /capes/e94a044e-53ca-4e95-846f-b5cf839e15a1 HTTP/1.1" 204 0 "-" "Java/1.8.0_161"
- - [19/Apr/2019:02:33:55 +0800] "GET /capes/e94a044e-53ca-4e95-846f-b5cf839e15a1 HTTP/1.1" 204 0 "-" "Java/1.8.0_161"
maby you can find a bug from server log
and some API from Blessin skin
GET http://example.com/username.json
to take detail
return
{
"username": "621sama",
"skins": {
"default": "834cbd848f0a29008bf5b1d59d02ecb1cf25dfd21fc88be1c183c9261f5fdd69",
"slim": "3d82f454ceeb30f2546283e08ab060a45d450dc6042c9077f638f10ca51205d4"
},
"cape": "2911438e8282d40e6d64fbefd076eef0a901cb90d3deae4057fec60c66eb93d2"
}
you can
GET http://example.com/textures/834cbd848f0a29008bf5b1d59d02ecb1cf25dfd21fc88be1c183c9261f5fdd69
to take skin.
Take skin/cape of player
example.com/{skin|cape}/{username}.png
Take skin/cape of player(steve or alex)
example.com/skin/{username}-{steve|alex}.png
Take skin from texture id
example.com/raw/{tid}.png
Take skin from hash
example.com/textures/{hash}
From the look of server log, it should work.
Can you describe in more detail as what part doesn't work?
If it helps, you may type in Chinese, I can read them.
正如你所说,从LOG来看,应该会有用。
我测试脱离皮肤站,改用手动。
在example.com/skins/用户名/index.php 写好了输出皮肤文件 (没有用)
由于在LOG中看到,有访问UUID
于是我测试将原先的用户名改为UUID
也就是
example.com/skins/UUID/index.php
一切正常
Blessin skin server这个皮肤站获取皮肤可以直接(虽然我也不确定是不是只有这个皮肤站是这样还是大部分都是这样获取皮肤)
example.com/skin/username.png
example.com/cape/username.png
您当前的是
skins/username
还有一点就是 对中文名字的支持~~~
为什么要用 /skins/用户名/index.php 这样的方式来处理请求?
这个服务器程序不能处理 /skins/用户名 吗?
还有, 对于不存在的皮肤文件, 它应当返回代码404.
我不认为MC内部支持中文的用户名, 不过你应该可以做到使用中文的显示名.
目前, OfflineSkins会这样请求自定义服务器:
- 假如该玩家拥有一个非离线用户的UUID, 会先尝试请求关于该UUID的皮肤文件, 失败后才会尝试请求关于用户名的皮肤文件
- 假如该玩家拥有一个离线用户的UUID (它的生成方法是依照了游戏里的代码), 会直接尝试请求关于用户名的皮肤文件
最后, 那个皮肤站点有提到CustomSkinLoader这个模组, 你或许能从它得到你想要的结果.
这是皮肤站接受的方式。
example.com/skin/username.png
example.com/cape/username.png
而这个MOD的是
example.com/skins/username
example.com/capes/username
我前面说到的手动新建对应目录
skins/用户名/index.php
skins/UUID/index.php
是为了测试,
最终只有通过uuid获取的皮肤才能正常显示。
也就是说
skins/用户名/index.php (无效)
skins/UUID/index.php (有效)
关于中文用户名,我在log中发现,访问的用户名会出现类似于
skins/\xCE\xD2\xD3\xC0\xD4\xB6\xD6\xBB\xB0\xAE\xD3\xA3\xB5\xBA\xC2\xE9\xD2\xC2
skins/????
而皮肤站中接受的中文是url编码。
我仍然不清楚你为什么要以用户名或UUID建立目录? 直接放对应文件在那个位置是不行的吗?
只要这个服务器程序在收到关于 /skins/用户名 或者 /skins/UUID 的请求的时候回答一个正确的皮肤文件就应该不会有问题.
我使用了Nginx进行测试, 结果很正常.
你能试试看使用常见的服务器程序吗? 比如我测试使用的Nginx.
关于中文用户名, 我并不打算写特殊代码来支持, 倘若目前的状态无法使用的话, 那么十分可能会持续这个状态下去.
以用户名或UUID建立目录只是为了查找出,哪里有问题。
我测试的最终结论就是,取用户名无效 取UUID OK
我也是NGINGX~~~
不搞中文支持的话没事的,我们也只是图新鲜 出1.14了 就玩一玩 要是CSL出了 我们还在玩的话 就换CSL 随缘吧23333
感觉好像是我的表达能力有问题,一直没让你听懂我的点
可是我仍然没办法再现出你遇到的问题, 自然也不能解决它.
你可否只使用Nginx本身的HTTP服务器功能来测试?
@zlainsama
这是URI本身的规定,除了英文字母、数字和有限的几个符号以外都需要进行编码,详见RFC 3986的规定。换而言之,除了中文之外,其他语言的字符也需要进行同样的编码。
https://tools.ietf.org/pdf/rfc3986.pdf