public static void HandleShortcutBarAdd(ShortcutBarAddRequestMessage message, WorldClient client)
        {
            switch ((ShortcutBarEnum)message.barType)
            {
            case ShortcutBarEnum.GENERAL_SHORTCUT_BAR:
                if (message.shortcut is ShortcutObjectItem)
                {
                    ShortcutObjectItem shortcutObj = (ShortcutObjectItem)message.shortcut;
                    GeneralShortcutRecord.AddShortcut(client.Character.Id, shortcutObj.slot, ShortcutObjectItem.Id, shortcutObj.itemUID, shortcutObj.itemGID);
                }
                if (message.shortcut is ShortcutSmiley)
                {
                    ShortcutSmiley shortcutSmiley = (ShortcutSmiley)message.shortcut;
                    GeneralShortcutRecord.AddShortcut(client.Character.Id, shortcutSmiley.slot, ShortcutSmiley.Id, shortcutSmiley.smileyId, 0);
                }
                if (message.shortcut is ShortcutEmote)
                {
                    ShortcutEmote shortcutEmote = (ShortcutEmote)message.shortcut;
                    GeneralShortcutRecord.AddShortcut(client.Character.Id, shortcutEmote.slot, ShortcutEmote.Id, shortcutEmote.emoteId, 0);
                }
                break;

            case ShortcutBarEnum.SPELL_SHORTCUT_BAR:
                ShortcutSpell shortcut = (ShortcutSpell)message.shortcut;
                SpellShortcutRecord.AddShortcut(client.Character.Id, shortcut.slot, shortcut.spellId);
                break;
            }
            client.Character.RefreshShortcuts();
        }
        public static void HandleShortcutBarRemove(ShortcutBarRemoveRequestMessage message, WorldClient client)
        {
            switch ((ShortcutBarEnum)message.barType)
            {
            case ShortcutBarEnum.GENERAL_SHORTCUT_BAR:
                GeneralShortcutRecord.RemoveShortcut(client.Character.Id, message.slot);
                break;

            case ShortcutBarEnum.SPELL_SHORTCUT_BAR:
                SpellShortcutRecord.RemoveShortcut(client.Character.Id, message.slot);
                break;
            }
            client.Send(new ShortcutBarRemovedMessage(message.barType, message.slot));
        }
        public static void HandleShortcutBarSwap(ShortcutBarSwapRequestMessage message, WorldClient client)
        {
            switch ((ShortcutBarEnum)message.barType)
            {
            case ShortcutBarEnum.SPELL_SHORTCUT_BAR:
                SpellShortcutRecord.SwapSortcut(client.Character.Id, message.firstSlot, message.secondSlot);
                break;

            case ShortcutBarEnum.GENERAL_SHORTCUT_BAR:
                GeneralShortcutRecord.SwapSortcut(client.Character.Id, message.firstSlot, message.secondSlot);
                break;
            }
            client.Character.RefreshShortcuts();
        }
        public static void HandleCharacterDeletion(CharacterDeletionRequestMessage message, WorldClient client) // finish this
        {
            CharacterRecord deletedCharacter = CharacterRecord.GetCharacterRecordById(message.characterId);

            if (deletedCharacter == null)
            {
                return;
            }
            StatsRecord.GetStatsRecord(message.characterId).RemoveElement();
            CharacterRecord.Characters.Remove(deletedCharacter);
            client.Characters.Remove(deletedCharacter);
            deletedCharacter.RemoveElement();
            CharacterItemRecord.RemoveAll(message.characterId);
            GeneralShortcutRecord.RemoveAll(message.characterId);
            CharacterSpellRecord.RemoveAll(message.characterId);
            CharacterJobRecord.RemoveAll(message.characterId);
            BidShopGainRecord.RemoveAll(message.characterId);
            CharacterGuildRecord.RemoveAll(message.characterId); // Si il est meneur de guilde?
            BidShopItemRecord.RemoveAll(message.characterId);
            Logger.Log("Character " + deletedCharacter.Name + " deleted");

            client.Send(new CharactersListMessage(client.Characters.ConvertAll <CharacterBaseInformations>(x => x.GetBaseInformation()), false));
        }