Java 通过不带API的PHP脚本获取minecraft uuid

Java 通过不带API的PHP脚本获取minecraft uuid,java,php,uuid,minecraft,Java,Php,Uuid,Minecraft,如何为具有UTF-8名称的玩家(如“аааааа”)获取Minecraft playerUUID?在这种情况下,任何已知的API都不能正常工作。更重要的是,API使用与外部资源的连接,因为我只想使用一个PHP脚本。在Java中,获取播放器UUID的代码是: UUID.nameUUIDFromBytes(("OfflinePlayer:" + name).getBytes(Charsets.UTF_8)) 需要创建函数模拟的帮助。在PHP中实现此行为并不容易,因为nameuidFrombytes

如何为具有UTF-8名称的玩家(如“аааааа”)获取Minecraft player
UUID
?在这种情况下,任何已知的API都不能正常工作。更重要的是,API使用与外部资源的连接,因为我只想使用一个PHP脚本。在Java中,获取播放器UUID的代码是:

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

需要创建函数模拟的帮助。

在PHP中实现此行为并不容易,因为
nameuidFrombytes
的所有按位运算都依赖于64位2的互补整数,但是PHP的整数仅限于处理器体系结构的位数-32代表32,64代表64,因此,除非您能保证它只在64位系统上运行,否则您必须找到一个任意精度的库来为您执行此操作

因此,为什么不将PHP包装在Java中,例如,为以下脚本创建一个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
,这将产生:

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


你是在问如何将你发布的一行Java翻译成PHP吗?在Minecraft中,所有玩家的名字只允许
单词字符
。这是指正则表达式中的
\w
,并在范围
A-Z
A-Z
和下划线上指定。您将永远无法将
UUID
转换为“UTF-8名称”,因为这不会发生。