Skin setter

PHOTO EMBED

Mon Jun 13 2022 22:20:33 GMT+0000 (Coordinated Universal Time)

Saved by @MH100 #java

public void resendPlayerPacket(Player receiver, Skin skin, boolean isReset) {

        PacketContainer removeInfo;
        PacketContainer addInfo;
        PacketContainer respawn;
        PacketContainer teleport;

        try {
            EntityPlayer ep = ((CraftPlayer) receiver).getHandle();
            GameProfile gameProfile = ep.getProfile();
            PropertyMap pm = gameProfile.getProperties();
            Property property = pm.get("textures").iterator().next();
            pm.remove("textures", property);
            pm.put("textures", new Property("textures", skin.getValue(), skin.getSignature()));


            EnumWrappers.NativeGameMode gamemode = EnumWrappers.NativeGameMode.fromBukkit(receiver.getGameMode());
            WrappedChatComponent displayName = WrappedChatComponent.fromText(receiver.getPlayerListName());
            PlayerInfoData playerInfoData = new PlayerInfoData(WrappedGameProfile.fromHandle(gameProfile), 0, gamemode, displayName);

            removeInfo = new PacketContainer(PacketType.Play.Server.PLAYER_INFO);
            removeInfo.getPlayerInfoAction().write(0, EnumWrappers.PlayerInfoAction.REMOVE_PLAYER);
            removeInfo.getPlayerInfoDataLists().write(0, Collections.singletonList(playerInfoData));

            addInfo = removeInfo.deepClone();
            addInfo.getPlayerInfoAction().write(0, EnumWrappers.PlayerInfoAction.ADD_PLAYER);

            respawn = createRespawnPacket(receiver, gamemode);

            teleport = createTeleportPacket(receiver.getLocation().clone());
        } catch (ReflectiveOperationException reflectiveEx) {
            reflectiveEx.printStackTrace();
            return;
        }
content_copyCOPY