ページ 11

【spigot1.12】GameProfileでのスキン変更について

投稿記事Posted: 2018年5月05日(土) 19:27
by pico
GameProfileをputするところまで完成している(はず)のですが、なかなかGameProfileの設定がうまくいきません。何か間違っている点があるのでしょうか?
GameProfileですがプレイヤーのUUIDをmojangAPIに投げるのではなく、自前のpngを使用したいので完全に自作しています。

GameProfileをputする前後のGameProfileとdecodeしたvalueです。
確認しましたが正常にput出来ているのでvalueの書式の問題だと思っているのですが...

put前GameProfile
コード: 全て選択
com.mojang.authlib.GameProfile@53367f44[id=efeea291-d632-4ff2-b56f-68e3c8b699a3,name=I_love_kakkii,properties={textures=[com.mojang.authlib.properties.Property@5a9ef36b]},legacy=false]


put前value
コード: 全て選択
{"timestamp":1525515134488,"profileId":"efeea291d6324ff2b56f68e3c8b699a3","profileName":"I_love_kakkii","textures":{"SKIN":{"url":"http://textures.minecraft.net/texture/4267eb7aae17587bfcbf6e7917b56daacf9c2e87293bfc738575af46bb4","metadata":{"model":"slim"}}}}


put後GameProfile
コード: 全て選択
com.mojang.authlib.GameProfile@53367f44[id=efeea291-d632-4ff2-b56f-68e3c8b699a3,name=I_love_kakkii,properties={textures=[com.mojang.authlib.properties.Property@2506bf22]},legacy=false]


put後value
コード: 全て選択
{"timestamp":1525515149976,"profileId":"efeea291d6324ff2b56f68e3c8b699a3","profileName":"I_love_kakkii","textures":{"SKIN":{"url":"http://textures.minecraft.net/texture/6418d8b8c407aae2ba6c352f4de178e906c51a5658a9507a7f63648510c0a7"}}}

Re: 【spigot1.12】GameProfileでのスキン変更について(

投稿記事Posted: 2018年5月05日(土) 19:31
by pico
こっちは自己解決しました

処理を実行するとプレイヤーのスキンがアレックスになります...
また、処理を実行したアカウントから見るとスキンは変わっていないままです。

処理を実行したアカウントから見てもスキンを変える方法もできればお願いします。

putしたあとの処理に間違えっている所があれば指摘お願いします。
(packetのsendにはProtocollibを使用しています)

コード: 全て選択
((CraftPlayer)p).getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER, ((CraftPlayer)p).getHandle()));
            ((CraftPlayer)p).getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, ((CraftPlayer)p).getHandle()));


            p.spigot().respawn();

            Player players;
            for(Player pls : Bukkit.getOnlinePlayers()){
                players = pls;
                players.hidePlayer(p);
            }

            for(Player pls : Bukkit.getOnlinePlayers()){
                players = pls;
                players.showPlayer(p);
            }