请问下 插件能获取到进入游戏的玩家UUID吗   或者是别的启动参数 也行
本人最近无聊学习下插件的开发(也就是很简单的那种啦), 做了登录插件 配合登录器用 本来想了个 玩家进游戏 判断时间戳 跟IP的 能对上就可以进入游戏 有一样对不上 就T出服务器 可是最后蛋疼的发 有个玩家的IP php网页获取的 跟插件获取的 居然不一样 这让我完全不知道怎么搞了
所以就来问下 插件可不可以获取到 启动参数里的UUid 之内的数据 方便 判断了
本人最近无聊学习下插件的开发(也就是很简单的那种啦), 做了登录插件 配合登录器用 本来想了个 玩家进游戏 判断时间戳 跟IP的 能对上就可以进入游戏 有一样对不上 就T出服务器 可是最后蛋疼的发 有个玩家的IP php网页获取的 跟插件获取的 居然不一样 这让我完全不知道怎么搞了
所以就来问下 插件可不可以获取到 启动参数里的UUid 之内的数据 方便 判断了
玩家登入事件: PlayerJoinEvent
@EventHandler
public void join(PlayerJoinEvent e)
{
UUID uuid=e.getPlayer().getUniqueId();
}
@EventHandler
public void join(PlayerJoinEvent e)
{
UUID uuid=e.getPlayer().getUniqueId();
}
810587921 发表于 2016-4-28 05:51
玩家登入事件: PlayerJoinEvent
@EventHandler
public void join(PlayerJoinEvent e)
哦 谢谢哈
问下 UUID 这东西是不是可以随机了 破解版的UUID 要怎么获取了
greytoowolf 发表于 2016-4-28 11:48
哦 谢谢哈
问下 UUID 这东西是不是可以随机了 破解版的UUID 要怎么获取了 ...
UUID如果是离线服务器由启动器传入
q513902026 发表于 2016-4-28 12:04
UUID如果是离线服务器由启动器传入
对 是由启动器传入的 我听大神们请这个是随机的
810587921 发表于 2016-4-28 05:51
玩家登入事件: PlayerJoinEvent
@EventHandler
public void join(PlayerJoinEvent e)
这个命令获取的UUID 不是获取的启动器传递进的UUID吧 这个是服务器生成的UUID 有没有办法可以取到客户端上的UUID了
 本帖最后由 andylizi 于 2016-5-19 16:04 编辑 
离线服务器,无法获取到。
离线服务器获取到的UUID是这样计算的:复制代码所以不是随机的,是固定的。比如zhouhaha的盗版uuid永远是1bc4cdb2-28cd-3c0d-ae25-83b410b8e52c,进哪个服务器都一样
而正版服务器,获取到的(似乎)是mojangapi弄来的正版uuid,也是唯一的。
由于mc的验证机制是双向验证,流程如下:
所以,有两个可能性:
1、正版服务器获取到的uuid来源是mojangapi,mojangapi来的uuid就是正版uuid
2、正版服务器获取到的uuid的来源是客户端,但客户端的uuid也必须是正版uuid,否则是无法通过正版验证的。
所以,无论哪种可能性,服务器都无法请求到启动器自定义的uuid。
完毕。
离线服务器,无法获取到。
离线服务器获取到的UUID是这样计算的:
- UUID.nameUUIDFromString("OfflinePlayer:玩家名".getBytes("UTF-8"));
而正版服务器,获取到的(似乎)是mojangapi弄来的正版uuid,也是唯一的。
由于mc的验证机制是双向验证,流程如下:
- 当客户端进入服务器时,服务器看看自己是不是来了online-mode,如果是,
- 向客户端发送请求登录的数据包,里面包含了服务器启动时随机生成的key pair里的public key
- 客户端收到数据包后,向mojang服务器请求登录,里面包含了客户端的uuid,token,和刚刚服务器的public key,如果失败,提示无效的会话,成功则继续
- mojang服务器把这个客户端的uuid与服务器的public key缓存下来。
- 客户端向服务端发送数据包告诉服务端我登录成功啦,然后服务端不信,去问mojang服务器xxx玩家使用我的public key是否登录成功。mojang服务器查询到这条记录后就告诉服务端,客户端的确已经登录成功了,并告诉服务端uuid。否则服务端就把玩家t出去。
- 服务端获取到uuid后,把那边Player的uuid更新一下,然后允许玩家进入服务器,验证过程结束。
 
所以,有两个可能性:
1、正版服务器获取到的uuid来源是mojangapi,mojangapi来的uuid就是正版uuid
2、正版服务器获取到的uuid的来源是客户端,但客户端的uuid也必须是正版uuid,否则是无法通过正版验证的。
所以,无论哪种可能性,服务器都无法请求到启动器自定义的uuid。
完毕。