graywolf
请问下 插件能获取到进入游戏的玩家UUID吗   或者是别的启动参数 也行

本人最近无聊学习下插件的开发(也就是很简单的那种啦), 做了登录插件 配合登录器用     本来想了个 玩家进游戏 判断时间戳 跟IP的  能对上就可以进入游戏  有一样对不上 就T出服务器   可是最后蛋疼的发  有个玩家的IP    php网页获取的 跟插件获取的 居然不一样    这让我完全不知道怎么搞了  


所以就来问下 插件可不可以获取到 启动参数里的UUid 之内的数据  方便 判断了

a8105
玩家登入事件: PlayerJoinEvent
@EventHandler
public void join(PlayerJoinEvent e)
{
    UUID uuid=e.getPlayer().getUniqueId();
}

graywolf
810587921 发表于 2016-4-28 05:51
玩家登入事件: PlayerJoinEvent
@EventHandler
public void join(PlayerJoinEvent e)

哦 谢谢哈     

问下 UUID 这东西是不是可以随机了 破解版的UUID 要怎么获取了

q513902026
greytoowolf 发表于 2016-4-28 11:48
哦 谢谢哈     

问下 UUID 这东西是不是可以随机了 破解版的UUID 要怎么获取了 ...

UUID如果是离线服务器由启动器传入

graywolf
q513902026 发表于 2016-4-28 12:04
UUID如果是离线服务器由启动器传入

对  是由启动器传入的  我听大神们请这个是随机的  

graywolf
810587921 发表于 2016-4-28 05:51
玩家登入事件: PlayerJoinEvent
@EventHandler
public void join(PlayerJoinEvent e)

这个命令获取的UUID  不是获取的启动器传递进的UUID吧  这个是服务器生成的UUID   有没有办法可以取到客户端上的UUID了

andylizi
本帖最后由 andylizi 于 2016-5-19 16:04 编辑

离线服务器,无法获取到。
离线服务器获取到的UUID是这样计算的:
  1. UUID.nameUUIDFromString("OfflinePlayer:玩家名".getBytes("UTF-8"));
复制代码
所以不是随机的,是固定的。比如zhouhaha的盗版uuid永远是1bc4cdb2-28cd-3c0d-ae25-83b410b8e52c,进哪个服务器都一样
而正版服务器,获取到的(似乎)是mojangapi弄来的正版uuid,也是唯一的。

由于mc的验证机制是双向验证,流程如下:


所以,有两个可能性:
1、正版服务器获取到的uuid来源是mojangapi,mojangapi来的uuid就是正版uuid
2、正版服务器获取到的uuid的来源是客户端,但客户端的uuid也必须是正版uuid,否则是无法通过正版验证的。
所以,无论哪种可能性,服务器都无法请求到启动器自定义的uuid。
完毕。