如何为拥有UTF-8名称的玩家获取Minecraft玩家UUID
,例如“игрок”?在这种情况下,任何已知的API都不正确。更重要的是,API使用与外部资源的连接,因为我只想使用一个PHP脚本。在Java中获取播放器UUID的代码是:
UUID.nameUUIDFromBytes(("OfflinePlayer:" + name).getBytes(Charsets.UTF_8))
需要帮助来创建功能模拟。
答案 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