当前位置: 首页 > 知识库问答 >
问题:

Bukkit将玩家皮肤从服务器更改为png(签名无效)

韩阳飙
2023-03-14

我正在编写一个bukkit插件,它应该能够向玩家发送游戏档案更新,以改变玩家的皮肤。但在游戏机上,它说,皮肤签名是无效的。如何获得有效的皮肤签名?

/**
 * Sets the skin of a player
 * @param p The player
 * @param fn The file name on the server
 */
public void setSkin(Player p, String fn){
    GameProfile gp = ((CraftPlayer)p).getProfile();
    String skin = new String(Base64.encodeBase64(("{\"timestamp\":1503497691710,\"profileId\":\"b4be22fdb7004478839c787357d78cbe\",\"profileName\":\"Colinus999\",\"signatureRequired\":false,\"textures\":{\"SKIN\":{\"url\":\"http://colintimbarndt.de/skin/"+fn+"\"}}}").getBytes()));
    String sig = "kVWGmfZuMbHc0KhDjX0FrdNA4KK/JTFiSDUQu5O1Jw76/Y+ozfsxZUNkljzCke3cEhpTCdgZuy0nEaBI7WhdunacxBcm7r//a1W/Z5MBJKt3KZM8lySzHlUaM1cSIwRZIrGz5PDcqbgxm/GmOEiewehn6M5vEIBOoYwmCBNpYswVkIG/2qmcHsXUG3zzvzoYdTuKZuBHdGhWHr14TI19deW/Mqru2Bmc+bK1FrGrnT0urUiDIsDbjWXGdOYkci7vMPutlFHDHbFu0+HDalIpeRjI3IiVnwHPim9zu+fkYN92pAyAQeTa2AwmHTMO6/JY/o539HAvYbDcovMzXXZxzPWlozhw3ib+z+OwvsOuBcwPCeN1zhiUYQJFm5lR8d2IvwbNe2y40NWQm0oBI71rneNw2h5TH54muqLRJ297Sli35Ufs0z79I3gn5XTtfiSLFTicZzQ61Nq8CmcXKi4Q/eytHpPkmoNibPsr6BUJd6BI2XDg2YQzdBvpQcjd6azkuQL95arOdlk1UaBMIZwU5/yHaNfiG0Q7+fHTbIXchIHtdr668ly6S0CqOKmvztmcHYlUqV73WBB7GmoZS0tKz8cmMc1hmlvkh+DZ8BQ+EGBu6pYZE6NQ8x+Vv69XIeLUCR3c/JIQ69uGIUwPWa6ainNp//aSUVULsxVS6g3Iwi8=";
    gp.getProperties().clear();
    gp.getProperties().put("textures", new Property("textures", skin, sig));
    gp.getProperties().put("Colinus999", new Property("textures", skin, sig));
    // Update the player
    for(Player p1 : lobby.getWorld().getPlayers()){
        p1.hidePlayer(p);
    }
    Bukkit.getScheduler().scheduleSyncDelayedTask(Plugin.plugin, new Runnable() {
        public void run(){
            for(Player p1 : lobby.getWorld().getPlayers()){
                p1.showPlayer(p);
            }
        }
    }, 5);
}

我通过打开以下链接获得签名和其他数据:https://sessionserver.mojang.com/session/minecraft/profile/b4be22fdb7004478839c787357d78cbe?unsigned=false

有关玩家皮肤的更多信息:https://minecraft.gamepedia.com/Player.dat_format#Player_Heads

我知道这是可能的,因为有服务器在更改玩家的皮肤,甚至编辑它。

共有1个答案

施季
2023-03-14

我修好了!

我必须为每个皮肤保存json!(至少签名和皮肤数据)你不需要任何服务器等。

 类似资料:
  • 我目前正在开发一个插件,可以让你假设另一个玩家的身份。它几乎完美无缺地做到了这一点:您的UUID和用户名被更改为您假定为服务器端的用户的身份,就服务器和插件所知,您似乎就是那个玩家。你将拥有与他们相同的等级,相同的权限,一切。我唯一没能得到的就是皮肤。我以为当UUID是的时候,一个玩家的皮肤会为其他玩家改变,但事实似乎并非如此。我使用反射来更改GameProfile和EntityPlayer中的U

  • 动态更改导航条和字体颜色,用于实现app换肤功能。 作者说:模仿QQ的换肤,实现方式很初级.仅供参考学习吧. [Code4App.com]

  • 我正在用libgdx写一个游戏,我借用了这个皮肤。来自教程的json(和相关文件)。 正在使用的字体(默认)在更密集的屏幕上以一种丑陋的方式缩放,因此我使用自己的超大字体生成-在游戏本身中,我将其缩放到一个合理的大小(基本上我使用)。我现在使用的字体是前一种字体的3倍大。 我更改了在皮肤中使用哪个字体的参考。json文件,因此,我所有的按钮、标题和其他东西都有一个巨大的字体显示。 有办法缩放. j

  • 我正在尝试查看玩家的库存中是否有以下物品,如果有,我想移除这些物品并向他们发送消息,说该物品已被移除,但我不知道如何做到这一点,这就是我目前拥有的: 我在.contains(bannedItems,1))行上收到一个错误。 谢谢你的帮助!

  • 该悬浮QQ在线客服插件一款很实用的功能,基本每个企业网站都需要,能及时解决网站访客的提问,转化成企业的客户 。 提供6种不同颜色的皮肤以及2个完全不同风格的皮肤给用户选择。解决了之前第一版本在Chrome浏览器中,点击收缩时悬浮窗口不显示的BUG。另外,还增加了几个参数,让该插件的在应对更多需求时更具灵活性。 需要引用的文件: 1、CSS 2、jQuery 3、jQuery的调用 $(window

  • 皮肤 皮肤机制为 moye 控件提供强大的样式自定义能力,可以支持 自定义样式 与 换肤 / 风格主题 。 功能特点: 首先,每个控件都有一个基础样式类型: ui-{type},其中{type}表示控件的主类型; 其次,控件可以设定皮肤参数,并可以指定多个皮肤。每个皮肤设定都会添加两个样式类型: skin-{skin} 与 skin-{skin}-{type}, 其中 {skin} 表示设定的皮肤