通过没有API的PHP脚本获取minecraft uuid

时间:2014-08-09 14:21:34

标签: java php uuid minecraft

如何为拥有UTF-8名称的玩家获取Minecraft玩家UUID,例如“игрок”?在这种情况下,任何已知的API都不正确。更重要的是,API使用与外部资源的连接,因为我只想使用一个PHP脚本。在Java中获取播放器UUID的代码是:

UUID.nameUUIDFromBytes(("OfflinePlayer:" + name).getBytes(Charsets.UTF_8))

需要帮助来创建功能模拟。

1 个答案:

答案 0 :(得分:2)

在PHP中实现这种行为没有简单的方法,因为nameUUIDFromBytes依赖于所有位运算的64位二进制补码整数,但PHP的整数仅限于处理器体系结构的位数 - 32 for 32和64 for 64,所以除非你能保证它只能在64位系统上运行,你必须找到一个任意精度库来为你做。

所以相反,你为什么不围绕Java包装PHP,例如,为这个脚本创建一个Jar文件:

package uuid;

import com.google.common.base.Charsets;
import java.util.UUID;

public class GetUUID
{
    public static void main(final String[] args)
    {
        System.out.println(UUID.nameUUIDFromBytes(("OfflinePlayer:" + args[0]).getBytes(Charsets.UTF_8)));
    }
}

然后有一个调用Jar文件的PHP脚本,如下所示:

<?php

$username = @$_GET['username'];
if(empty($username))
{
    http_response_code(400);
    die;
}

echo exec("java -jar C:\UUID.jar $username");
?>

然后您可以使用http://example.com/uuid.php?username=test调用PHP脚本,这将产生:

  

530fa97a-357f-3c19-94d3-0c5c65c18fe8