public static final void EnterCS(final int playerid, final MapleClient c) {
        final CashShopServer cs = CashShopServer.getInstance();
        final CharacterTransfer transfer = cs.getPlayerStorage().getPendingCharacter(playerid);

        if (transfer == null) {
            c.getSession().close();
            return;
        }
        MapleCharacter chr = MapleCharacter.ReconstructChr(transfer, c, false);

        c.setPlayer(chr);
        c.setAccID(chr.getAccountID());

        if (!c.CheckIPAddress()) { // Remote hack
            c.getSession().close();
            return;
        }

        final int state = c.getLoginState();
        boolean allowLogin = false;

        try {
            if (state == MapleClient.LOGIN_SERVER_TRANSITION || state == MapleClient.CHANGE_CHANNEL) {
                if (!cs.getCSInterface().isCharacterListConnected(c.loadCharacterNames(c.getWorld()))) {
                    allowLogin = true;
                }
            }
        } catch (RemoteException e) {
            cs.reconnectWorld();
        }
        if (!allowLogin) {
            c.setPlayer(null);
            c.getSession().close();
            return;
        }
        c.updateLoginState(MapleClient.LOGIN_LOGGEDIN, c.getSessionIPAddress());

        cs.getPlayerStorage().registerPlayer(chr);

        c.getSession().write(MTSCSPacket.warpCS(c));
        showCS(c);
        c.getSession().write(MTSCSPacket.sendWishList(chr, false));
    }